gpt4 book ai didi

c++ - 简单的 while 循环不终止(初学者)

转载 作者:行者123 更新时间:2023-11-27 23:09:53 26 4
gpt4 key购买 nike

这是我希望我的程序执行的操作。提示用户输入 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 循环永远不会终止。正如我所写的那样,while 条件将在 control = 11 时立即变为 false,并且控制变量在 while 主体的末尾递增,因此它不应继续进行。但确实如此。

我的第二个头痛(可能相关)是我输入的偶数之和应该是 30,奇数之和应该是 25。然而,虽然我的程序得到的 oddSum 是正确的,但它只求和平均为 20,因此由于某种原因它不计算最后一个数字 (10)。

我已经在纸上仔细地遍历了这个程序好几次。此外,我已经让它显示变量值,所以我可以跟踪它在每个 while 循环中做了什么。最终,它只是停止显示输出,但从未真正终止。它正确地计算了偶数和赔率,只是没有加上最后一个数字。

在我看来这里至少有一个差一错误,可能有 2 个错误相互叠加。但我已经尝试调整我的各种值(value)观,但没有任何作用。我的另一个想法是我怀疑我设置输入流的方式。 IE。我不确定在 while 循环的最后一次迭代中将为 num 分配什么值。

任何人都可以阐明这些问题中的任何一个吗?

最佳答案

在循环的顶部读取(检查计数后)

// cin >> num; 
while (control <= 10)
{
cin >> num;
if (num%2 == 0)
{
evenSum = evenSum + num;
}
else
{
oddSum = oddSum + num;
}
control++;
// cin >> num;
}

关于c++ - 简单的 while 循环不终止(初学者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20964204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com