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

Posted

技术标签:

【中文标题】程序编译、运行,但不以 DevC++ 结束【英文标题】:Program Compiles, Runs, but doesn't end in DevC++ 【发布时间】:2014-12-14 23:32:41 【问题描述】:

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

【问题讨论】:

仅供参考:它真的无法在 codepad.org 上正确运行;您不能输入N,而是使用0。例如,如果您添加N=5,codepad.org 会在一段时间后发出超时。 我知道,这就是为什么我发表评论说它可能是键盘忽略的东西,因为它使用 0 而不是其他值。 【参考方案1】:
  while((i % 2) != 0)
    
        sum = sum + i;
    

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

【讨论】:

好的,我明白你的意思了,我把它改成了一个 if 语句,但是同样的事情一直在发生。即使我注释掉除 main 之外的所有内容,并在用户输入“N”后要求它打印出“N”,同样的事情也会发生。 好的,我已经意识到问题所在。无论我做了什么更改和编译,或者即使我尝试保存文件,当我点击“运行”时,它不会随着这些更改或保存而运行,只是我第一次运行和编译时的原始代码。因为当我将您的代码复制并粘贴到 main 并注释掉我最初放置的所有内容时,它仍然会在注释掉时打印“选择一个数字”。 @Sarah 你想要做的是点击 Compile & Run 而不是 RunRun 只是运行最新构建的可执行文件,而 Compile & Run 将在运行之前将您的最新代码编译成新的可执行文件。 我知道,我一直在点击编译和运行。 我不知道这是否有帮助,但这里有一个文档,其中包含正在发生的事情的屏幕截图。 docs.google.com/document/d/…【参考方案2】:

似乎编辑工作正常,请尝试删除旧的输出文件并重建并重新编译整个程序。 输出似乎如下:

选择一个值:52

所有奇数

进程在 1.034 秒后退出,返回值为 0 按任意键继续 。 . .

【讨论】:

添加您的代码并更清楚地解释问题。【参考方案3】:

确保上次运行的窗口已关闭,否则编译器将不会重新编译,而只会运行您更改之前的先前版本。您可能会在调试模式下将此视为底部说明的错误。 while() 是一个无限循环,因为 i 在 while() 或其 内没有更改,因此请使用 if

【讨论】:

更优雅:if(N%2==0) m=N-1;else m=N;总和=0; for(i=1;i

以上是关于程序编译、运行,但不以 DevC++ 结束的主要内容,如果未能解决你的问题,请参考以下文章

退出Docker后保持继续运行的解决办法 docker结束但不退出 docker退出后继续运行系统

devc++为啥代码改变编译运行却没变

devc++为啥代码改变编译运行却没变 ?

从 PHP 启动脚本运行 Python 脚本,但不结束它

为啥devc运行和编译可以但是没分

应用程序未正确结束并在后台运行