【发布时间】:2023-03-30 02:40:01
【问题描述】:
我编写了一个程序来对所有小于或等于 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;
}
【问题讨论】:
-
仅供参考:它真的无法在 codepad.org 上正确运行;您不能输入
N,而是使用0。例如,如果您添加N=5,codepad.org 会在一段时间后发出超时。 -
我知道,这就是为什么我发表评论说它可能是键盘忽略的东西,因为它使用 0 而不是其他值。