问题描述
所以从技术上讲,我已经完成了作业中所说的内容,因为这可行:
#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和Tour页。巡回赛为您提供了另一个徽章,另一个只是防止他人投票或关闭您将来的问题的好建议。您在how to ask a homework question上已有一个好主意,但是阅读该页面也是一个好主意。
但是我离题了。
祝你好运,我希望你能走对路。