程序编译、运行,但不以 DevC++ 结尾

Program Compiles, Runs, but doesn't end in DevC++

本文关键字:DevC++ 结尾 编译 运行 程序      更新时间:2023-10-16

我写了一个程序来求和所有小于或等于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