当我输入3个偶数时,它表示我输入4

Ren*_*ito 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;
}
Run Code Online (Sandbox Code Playgroud)

有些事情是错的,我需要帮助,当我结束程序时,偶数总是+1.

Jea*_*bre 22

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

只要输入0就会中断,并使用无限循环

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

如注释中所述,另一种方法是使用条件while循环,如果输入失败则将其短路并将值测试为零.在这种情况下,您不需要在循环中测试零:

while ((cin >> value) && value) { ... }
Run Code Online (Sandbox Code Playgroud)

  • 真的,循环应该是`while((cin >> value)&& value)` (2认同)

kaa*_*bac 6

0 % 2 == 0
Run Code Online (Sandbox Code Playgroud)

这也算得上是均匀的