我写了一个程序来总结所有小于或等于N的奇数。它不是最有效或最有说服力的程序,但它在Codepad.org上的编译器中工作,在DevC ++中不起作用。通常当我编写的程序陷入某种无限循环时,程序会在DevC ++中崩溃,Windows会阻止它并让我知道。
这里,程序编译并运行,但只是坐着,光标闪烁,什么都不做。 Windows无法阻止它,没有任何反应,程序无法完成,无论我让它坐多久。我猜这是DevC ++的一个问题,除非它是Codepad忽略的代码问题。有人会向我解释这里发生了什么吗?
这是我的代码:
#include <iostream>
using namespace std;
int odd(int N)
{
int i;
int sum = 0;
for(i = 0; i <= N; ++i)
{
while((i % 2) != 0)
{
sum = sum + i;
}
}
return sum;
}
int main()
{
int N;
cout << "Pick a value: ";
cin >> N;
cout << "The sum of all numbers <= to " << N << " is: " << odd(N);
return 0;
}
我已对if语句进行了建议更改,并且出现了同样的问题:
#include <iostream>
using namespace std;
int odd(int N)
{
int i;
int sum = 0;
for(i = 0; i <= N; ++i)
{
if ((i % 2) != 0)
{
sum = sum + i;
}
}
return sum;
}
int main()
{
int N;
cout << "Pick a value: ";
cin >> N;
cout << "The sum of all odd numbers <= to " << N << " is: " << odd(N);
return 0;
}
答案 0 :(得分:2)
while((i % 2) != 0)
{
sum = sum + i;
}
这是一个无限循环。因为如果(i % 2 != 0)
为真,那么程序会一次又一次地增加和。您可能要做的是使用if
语句而不是while
}
答案 1 :(得分:0)
似乎编辑工作正常,请尝试删除旧的输出文件并重建并重新编译整个程序。 输出似乎如下:
选择一个值:52
所有奇数<=到52的总和是:676
进程在 1.034 秒后退出,返回值为 0 按任意键继续 。 . .
答案 2 :(得分:0)
确保关闭上一次运行的窗口,否则编译器将不会重新编译,而只会在您更改之前运行之前的版本。在调试模式下,您可能会将此视为底部说明的错误。 while() 是一个无限循环,因为 i 在 while() 或其 {} 内没有改变,所以使用 if