c++ - 程序编译、运行,但不会在 DevC++ 中结束

标签 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;
}

最佳答案

  while((i % 2) != 0)
    {
        sum = sum + i;
    }

这是一个无限循环。因为如果 (i % 2 != 0) 为真,那么程序将一次又一次地增加总和。您可能想要做的是拥有一个 if 语句而不是 while

关于c++ - 程序编译、运行,但不会在 DevC++ 中结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27475368/

相关文章:

c++ - Windows 7共享内存的奇怪错误

c++ - 我如何使用 DEV C++ 构建发布 exe?

windows - 在 Dev-C++ 中编译 Windows 程序会出错

C++:指针与指针的指针在二叉树中插入节点

c - 由于 Visual Studio Ultimate 2013 中的 scanf_s ,程序崩溃

c++ - 在 longjmp/croak 之前显式调用析构函数

c++ - 如何通过终端 Mac 编译 C++ 程序

c++ - 红黑树~1子删除

c++ - (x ^ 0x1) != 0 是什么意思?

顺利编译,不运行,无输出(C)