You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何调用getch()后质数判断程序的.exe窗口仍自动关闭?

解决质数判断程序输入后窗口秒关的问题

问题场景

这段用于课程作业的质数判断C语言代码,逻辑看似正常,但在MWGin编译生成.exe后,输入数字程序窗口立刻关闭——明明已经调用了getch():

#include <stdio.h>
#include <conio.h>
void main()
{
    int x=0,y=0,z=0;
    printf("Enter a number:");
    scanf("%d", &x);
    z=x/2;
    for(y=2; y<=z; y++)
    {
        if(x%y==0)
        {
            printf("%d is not prime", x);
            break;
        }
    }

    if(y==z+1)
    { 
        printf("%d is prime", x);
    }

    getch();

}

(注:使用conio.h是学校要求,问题已解决)

问题原因

scanf("%d", &x)读取完数字后,你输入时按下的回车符会留在输入缓冲区里。后续的getch()会直接读取这个残留的回车,而非等待你手动输入,导致程序直接执行完退出。

解决方法

在getch()之前处理掉输入缓冲区的残留字符即可,两种常用方式:

  1. 用fflush(stdin)清空缓冲区:
fflush(stdin); // 清空输入缓冲区的残留字符
    getch();
  1. 用getchar()单独读取换行符:
getchar(); // 读取scanf留下的回车
    getch();

修改后重新编译运行,程序就会等待你按下任意键再关闭窗口。

内容的提问来源于stack exchange,提问作者Adyansh Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 17:12:43