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

问题描述

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

#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 QuestionTour页。巡回赛为您提供了另一个徽章,另一个只是防止他人投票或关闭您将来的问题的好建议。您在how to ask a homework question上已有一个好主意,但是阅读该页面也是一个好主意。

但是我离题了。

祝你好运,我希望你能走对路。