C++ 当我输入3个偶数时,它显示我输入了4 #包括 使用名称空间std; int main(){ int奇数=0,偶数=0,数值; cout
问题是,当您输入0结束循环时,它会在退出循环之前将其计为偶数 而是在输入0后立即中断,并使用无限循环C++ 当我输入3个偶数时,它显示我输入了4 #包括 使用名称空间std; int main(){ int奇数=0,偶数=0,数值; cout,c++,C++,问题是,当您输入0结束循环时,它会在退出循环之前将其计为偶数 而是在输入0后立即中断,并使用无限循环 #include <iostream> using namespace std; int main(){ int odd=0, even=0, value; cout<<"Enter Numbers\n"; cout<<"Enter 0 to End\n"; do{ cin>>value; if
#include <iostream>
using namespace std;
int main(){
int odd=0, even=0, value;
cout<<"Enter Numbers\n";
cout<<"Enter 0 to End\n";
do{
cin>>value;
if (value % 2==0)
even++;
else
odd++;
}
while (value !=0);
cout<<"The number of odd numbers is: "<<odd<<endl;
cout<<"The number of even numbers is: "<<even;
return 0;
}
如注释中所述,另一种方法是使用条件while
环路,如果输入失败,该环路将短路并根据零测试值。在这种情况下,您不需要在环路内测试零:
for (;;)
{
cin>>value;
if (!value) break; // stop now
if (value % 2==0)
even++;
else
odd++;
}
这也算作偶数在处理输入之前检查输入是否有效是一种很好的编程实践。 这里有一种类似的方法,检查输入,然后决定是否需要处理(检查输入是偶数还是奇数),这样可以解决您的问题 正如上面的一个答案所建议的,在处理之前检查有效输入应该可以解决您的问题:
如果(!value)中断;//立即停止
阅读理想情况下,在处理此类情况之前,您应该检查退出条件。@BasileStryneVitch now橡皮鸭肯定会在我的笔记本电脑包中!确实,循环应该是而((cin>>value)&&value)
你说得对,这是避免无限循环的最佳方法。我并没有试图在循环方面提供最佳答案,我对如此多的投票感到非常惊讶……我将进行编辑,因为你的建议非常好。不是“iif(!value)”,而是“if(value==0)”。你在做一个数字测试,而不是逻辑测试!好吧,这是一个品味的问题:。这里可以看到,至少有两个程序员在处理这个代码段,因为if(value%2==0)
我本来会写if(value%2){odd++;}else{偶数++}
while ((cin >> value) && value) { ... }
0 % 2 == 0