C ++从列表中计算奇数

时间:2015-02-16 16:28:15

标签: c++

我试图用C ++编写程序,用户应该输入10个整数,并将奇数的数量显示给用户。例如,用户输入:7,26,44,3,78,3,24,66,25,90,12,输出将是&#34;列表中有3个奇数&#34;。< / p>

我似乎无法找到我做错了什么。非常感谢任何帮助。

这是我的计划:

#include <iostream>
using namespace std;
int main()
{   
    int limit;
    int counter;
    int sum;
    int number;
    cout<<"Enter 10 digits:"<<endl;
    cin>>limit;
    counter=0;
    sum=0;

    while (counter < limit)
    {
        cin>>number;

        counter++;
        if (number%2==1)
            sum++;
    }

    cout<<"the number of odd numbers are"<<sum<<endl;
}

2 个答案:

答案 0 :(得分:3)

你的代码在while循环中是错误的。在那里写cin>>number毫无意义。您已经获得了所需的10位数字。您的while循环当前要求用户输入N次,其中N等于输入的10位数。

您打算做的是从int limit中提取一个数字并检查它是偶数还是奇数。以下是修改后的代码:

while (limit != 0)
{
  int digit = limit % 10; // extract last digit of limit
  limit = limit / 10; // remove last digit from limit
  if (digit % 2 == 1) // check if digit is odd
    sum++;
}

编辑:正如MikeHousky指出的那样,很长时间应该用来存储10位数字。以字符串的形式获取输入,然后操纵字符串会更有意义。

答案 1 :(得分:0)

目前您告诉用户,&#34;输入10位数字:&#34;我指的是一个10位数字。然后你循环直到他们输入了这个数字。因此,如果我输入1234567890,我会在我的余生中输入数字。

在用户输入非int之前,可能接受int s的内容会更有意义:

cout << "Enter numbers, to quit type: exit" << endl;
cout << "the number of odd numbers are " << count_if(istream_iterator<int>(cin), istream_iterator<int>(), [](int i)->bool{return i & 1;}) << endl;