这就是我希望我的程序要做的事情。提示用户输入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循环的最后一次迭代中将为num分配什么值。
任何人都可以解释这些问题吗?
答案 0 :(得分:2)
读取循环顶部(检查计数后)
// cin >> num;
while (control <= 10)
{
cin >> num;
if (num%2 == 0)
{
evenSum = evenSum + num;
}
else
{
oddSum = oddSum + num;
}
control++;
// cin >> num;
}
答案 1 :(得分:1)
要求在循环内输入数字,它很容易理解何时输入特定数字
int control = 1;
while (control <= 10)
{
cout << "Enter integer at position:"+Control << endl;
cin >> num;
if (num%2 == 0)
{
evenSum = evenSum + num;
}
else
{
oddSum = oddSum + num;
}
control++;
}
答案 2 :(得分:1)
尝试跟踪代码执行情况。手动。这是学习计算机思考方式的最佳方式。
你会意识到,循环条件已被破坏。你从0开始计数,继续高达10,包括,停止在11. 0..10,这是11个数字!
此外,您在开始时读取输入一次,然后在每次迭代结束时读取一次。这使得12次读取。
当尝试读取比提供的更多输入时,程序会阻塞并等待更多输入。无限循环中的程序处于活动状态,它会占用您的所有CPU资源。在这种情况下,程序被阻止,并且几乎不使用任何资源。
答案 3 :(得分:0)
我看不到错误。只有你需要输入11个数字而不是10个数字的问题。你试过输入11个数字吗?
答案 4 :(得分:0)
#include <iostream>
using namespace std;
int main()
{
int evenSum = 0;
int oddSum = 0;
int num;
int control = 0;
cout << "Enter 10 integers: " << "\n";
while (control <= 9 )
{
cin >> num;
if (num % 2 == 0)
{
evenSum += num;
}
else
{
oddSum += num;
}
control++;
}
cout << "The sum of the even integers is: " << evenSum << "\nThe sum of the odd integers is: " << oddSum << "\n";
return 0;
}