所以从技术上讲,我已经按照作业所说的做了,因为这是有效的:
#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
(如果符合您的要求)。这通常不太难,但有时会变得很棘手。谷歌通常是你的朋友。自从我使用 C++ 以来已经有一段时间了,所以我也必须查阅它才能使事情正确。
当你说“双倍”时,这个数字是2位数还是太长而不能成为
int
?一点点的含糊让我感到困惑。如果实际的 double
数据类型的数字太大,那么 string
应该会有所帮助,就像 2 位数字的问题一样。
为了使增量有用,您可以使用
sum += number;
,具体取决于您的 C++ 版本。旧版本不允许这样做,但新版本允许。令我惊讶的是,此时 gcc 或其他编译器还不够新,无法使用它。