【发布时间】:2014-01-07 04:57:02
【问题描述】:
这就是我希望我的程序执行的操作。提示用户输入 10 个整数。然后我的程序将偶数相加,奇数相加,然后显示两个和。简单的初学者练习。为此,我使用了一个带有控制变量的 while 循环。这是我的全部代码:
#include <iostream>
using namespace std;
int main()
{
int evenSum = 0;
int oddSum = 0;
int num;
int control = 0;
cout << "Enter 10 integers: " << endl;
cin >> num;
while (control <= 10)
{
if (num%2 == 0)
{
evenSum = evenSum + num;
}
else
{
oddSum = oddSum + num;
}
control++;
cin >> num;
}
cout << "The sum of the even integers is " << evenSum << endl;
cout << "The sum of the odd integers is " << oddSum << endl;
return 0;
}
为了测试这段代码,我使用前 10 个正整数 1-10 作为输入。但是,我有些头疼。首先,控制永远不会从 while 循环传递,即程序永远不会到达显示 evenSum 和 outSum 变量值的地步。我花了很长时间弄清楚为什么 while 循环永远不会终止。正如我写的那样,一旦 control = 11,while 条件就会变为 false,并且控制变量在 while 主体的末尾递增,所以它不应该继续下去。然而确实如此。
我的第二个头痛(可能相关)是我输入中偶数的总和应该是 30,奇数的总和应该是 25。然而,虽然我的程序得到了 oddSum 正确,它只求和最多可达 20,因此由于某种原因它不计算最后一个数字 (10)。
我在纸上仔细地浏览了这个程序好几次。另外,我已经让它显示变量值,所以我可以跟踪它在每个 while 循环中所做的事情。最终,它只是停止显示输出,但实际上并没有终止。并且它正确地总结了偶数和赔率,只是没有添加最后一个数字。
在我看来,这里至少有一个错误,可能有 2 个相互混合。但是我尝试过调整我的各种价值观,但没有任何作用。我的另一个想法是我怀疑我设置输入流的方式。 IE。我不确定在 while 循环的最后一次迭代中将为 num 分配什么值。
任何人都可以阐明这些问题中的任何一个吗?
【问题讨论】:
标签: c++ while-loop