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

C++ Program that adds positive odd numbers from keyboard, ignores even and stops when negative number or zero are entered - sum odd numbers

所以从技术上讲,我已经完成了作业所说的,因为这是可行的:

#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 循环和增量(这似乎根本不适用于此处)

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

当你说“double”时,这个数字是 2 位数字还是太长而不能成为 int?一点点模棱两可让我失望。如果它只是一个太大的数字作为实际的 double 数据类型,string 应该有助于解决这个问题,因为 2 位数的问题。

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

旁注

谢谢你不是“典型的作业题”。很好,您只是征求意见,而不是让别人为您编写代码。

虽然我找到了你,但你应该考虑阅读 How To Ask A Question and Tour pages. The Tour gets you another badge, and the other is just good advice to keep people from downvoting or closing your future questions. You already have a good idea on how to ask a homework question,但阅读该页面也是一个好主意。

不过我跑题了

祝你好运,希望我让你走上了正确的道路。