C++ 程序,从键盘添加正奇数,忽略偶数,并在输入负数或零时停止 - 求和奇数

问题描述 投票:0回答:1

所以从技术上讲,我已经按照作业所说的做了,因为这是有效的:

#include <iostream>
using namespace std;
int main()
{


        int number = 0;
        int sum = 0;

        cout << "Please enter an odd positive integer: " << endl;
        cout << "This program will end if number is <= 0 or decimal" << endl;
        
        
        cin >> number;
    
        while (number > 0)
        {
            if (number % 2 != 0)
                sum = sum + number;
            else
                cout << "That number was even - please enter odd number \n";
            
            
        
            cin >> number;
        }
        cout << "Sum of odd numbers = " << sum << endl;
        
        return 0;
}

但是 - 我突然意识到,当有人输入双精度或输入字符时,程序会退出,而不仅仅是警告这种情况会发生 - 我很想写下这一点。我尝试过使用 else if 语句,但没有得到期望的结果。我并不是要求有人为我解决这个问题本身,而是希望我能朝着正确的方向前进。我们目前正在研究 while 和 for 循环和增量(这似乎根本不适用于这里)

while-loop character decimal
1个回答
0
投票

首先,您必须将

number
变量更改为
string
来接受“任何内容”,处理垃圾输入,最后将其转换为
int
(如果符合您的要求)。这通常不太难,但有时会变得很棘手。谷歌通常是你的朋友。自从我使用 C++ 以来已经有一段时间了,所以我也必须查阅它才能使事情正确。

当你说“双倍”时,这个数字是2位数还是太长而不能成为

int
?一点点的含糊让我感到困惑。如果实际的
double
数据类型的数字太大,那么
string
应该会有所帮助,就像 2 位数字的问题一样。

为了使增量有用,您可以使用

sum += number;
,具体取决于您的 C++ 版本。旧版本不允许这样做,但新版本允许。令我惊讶的是,此时 gcc 或其他编译器还不够新,无法使用它。

© www.soinside.com 2019 - 2024. All rights reserved.