【发布时间】:2020-06-02 23:25:48
【问题描述】:
我正在制作一个关于从用户输入“n”个整数并分别计算偶数和奇数和的程序。但是,我对应该放入 while 循环的条件感到困惑。除此之外,偶数和奇数的总和计算得非常完美。
#include <stdio.h>
int main()
{
int i, n, number, sum = 0, summ = 0, count;
printf("Enter Number of Integers:");
scanf("%d", &n);
while (i <= n)
{
i = number;
printf("Enter Number:");
scanf("%d", &number);
i++;
if (number % 2 == 0)
{
sum = sum + number;
number++;
}
else if (number % 2 != 0)
{
summ = summ + number;
number++;
}
}
printf("Sum of Even Numbers: %d", sum);
printf("\nSum of Odd Numbers: %d", summ);
}
【问题讨论】:
-
i=number;可能不正确。 -
i未初始化。 -
While 循环在迭代次数未知的情况下使用,但在您的情况下是
n。为什么不使用for循环呢?此外,您不仅在第一次迭代时将i初始化为一个单元化变量,而且在每次迭代中都会覆盖它,因此它不能作为迭代计数器正常工作。 -
删除 i=number;如果您给出的第一个数字大于整数数,您的总和将是错误的
-
number++;行相当奇怪——它们应该被删除。您需要for (int i = 0; i < n; i++),这是用于计数0..n -的惯用C 循环。然后丢失i = number;行和现在无关的i++;行。您应该测试scanf()的结果,以确保有人在您希望他们输入-234567或其他数字时没有输入abcd。
标签: c loops while-loop scanf