这是代码:
#include <stdio.h>
#include <conio.h>
void main()
{
int i, N, oddSum = 0, evenSum = 0;
printf("Enter the value of N\n");
scanf ("%d", &N);
for (i=1; i <=N; i++)
{
if (i % 2 == 0)
evenSum = evenSum + i;
else
oddSum = oddSum + i;
}
printf ("Sum of all odd numbers = %d\n", oddSum);
printf ("Sum of all even numbers = %d\n", evenSum);
}
在这个程序中,它从用户(N)获取一个数字,然后在两个不同的行中打印奇数和偶数的总和。
两个问题:
1-%如何在这里工作? 2-完全解释这一行:
if (i % 2 == 0)
evenSum = evenSum + i;
答案 0 :(得分:2)
%
运算符为您提供剩余的除法。除了符号之外,偶数除以 2 将始终具有 0 的余数。奇数,如果为正,则余数为 1 ,如果为负,则余数为 -1 。您只需要测试一个案例,以确定它是否是偶然的,这就是您在现有代码中看到的情况。
if (i & 1) // Example: 0101 (5) & 0001 (1) == 1
// Odd
else // Example: 0100 (4) & 0001 (1) == 0
// Even
这种方法不涉及除法,在处理有符号整数时只有两种可能的结果而不是三种。