我编写了一个程序,用来将所有小于或等于N的奇数相加--这不是最有效、最雄辩的程序,但它在Codepad.org上的编译器中工作,在DevC++中不工作。通常,当我编写的程序被困在某种无限循环中时,程序会在DevC++和Windows中崩溃,并让我知道。
在这里,程序编译和运行,但只是坐在与光标闪烁,什么也不做。不管我让它坐多久,窗户都不能阻止它,什么都不会发生,程序也不会完成。我猜这是DevC++的一个问题,除非这是我的代码出现的问题。有人能向我解释一下这里发生了什么吗?
这是我的代码:
#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;
}发布于 2014-12-14 23:36:55
while((i % 2) != 0)
{
sum = sum + i;
}这是一个无限的loop.Because,如果(i % 2 != 0)是真的话,那么程序将再次增加和,您可能要做的again.What是有一个if语句而不是while
发布于 2021-05-11 15:53:12
似乎编辑是工作的,请尝试删除旧的输出文件和重建和重新编译整个程序。产出如下:
选择一个值: 52
所有奇数<=与52之和为: 676。
进程在1.034秒后退出,返回值为0,按任意键继续。。。
发布于 2021-05-17 23:09:43
确保上一次运行的窗口已关闭,否则编译器将不会重新编译,但在更改it.you之前只运行上一个版本,可能会将此视为调试模式中底部所述的错误。while()是一个无限循环,因为我在while()或它的{}中没有被更改,如果
https://stackoverflow.com/questions/27475368
复制相似问题