程序编译,运行,但不会在Dev C ++中结束

时间:2014-12-14 23:32:41

标签: c++ dev-c++

我写了一个程序来总结所有小于或等于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;
}

3 个答案:

答案 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