c++ - 当我输入 3 个偶数时,它显示我输入 4

标签 c++

#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;
}

出了点问题,我需要帮助,当我结束程序时,偶数总是 +1。

最佳答案

问题是,当您输入 0 结束循环时,它会在退出循环之前将其计为偶数...

改为一输入0就中断,使用无限循环

for (;;)
{
    cin>>value;
    if (!value) break;  // stop now
    if (value % 2==0)
    even++;
    else
    odd++;  
}

如评论中所述,另一种方法是使用条件 while 循环,如果输入失败,该循环会短路并测试值是否为零。在这种情况下,您不需要在循环中测试零:

while ((cin >> value) && value) { ... }

关于c++ - 当我输入 3 个偶数时,它显示我输入 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52817605/

相关文章:

c++ - QT/C++,OS X : Alternative for hide() when quiting app so that app keeps running and shows up again after clicking icon in dock

c++ - 如何判断一个多边形是凹的还是凸的?

c++ - OpenMesh多线程网格导入

c++ - Lua 和伪造的 Typecast

java - 如何找到 2 个单链表的公共(public)节点?

c++ - 如何让cin只接受数字

c++ - 使用 gcc 编译 .cpp

c++ - 链接器错误未解析的外部符号与我的 cnt 变量

c++ - 在编译时或至少在使用之前检查字符串是否包含禁止字符的任何创造性方法?

c++ - 通过 winsock 发送 Direct3D 顶点信息