程序编译、运行,但不以 DevC++ 结尾
Program Compiles, Runs, but doesn't end in DevC++
我写了一个程序来求和所有小于或等于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
似乎编辑正在工作,请尝试删除旧的输出文件并重建并重新编译整个程序。输出似乎如下所示:
选择一个值:52
所有奇数 <= 到 52 的总和为:676
进程在 1.034 秒后退出,返回值为 0按任意键继续 . . .
请确保上一次运行的窗口已关闭,否则编译器将不会重新编译,而只会在更改之前运行以前的版本。您可能会看到这是调试模式下底部所述的错误。while() 是一个无限循环,因为我在 while() 或其 {} 中没有改变,所以使用 if