我编写了一个程序来对所有小于或等于 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;
}
最佳答案
while((i % 2) != 0)
{
sum = sum + i;
}
这是一个无限循环。因为如果 (i % 2 != 0)
为真,那么程序将一次又一次地增加总和。您可能想要做的是拥有一个 if
语句而不是 while
关于c++ - 程序编译、运行,但不会在 DevC++ 中结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27475368/