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

如何修复C语言猜数字游戏猜对时同时输出RIGHT和FAILURE的问题

C语言猜数字程序BUG修复

问题原因

原代码里的break只会终止while循环,循环结束后的printf("FAILURE!");是无条件执行的,所以用户猜对跳出循环后,还是会打印FAILURE,导致两个内容同时输出。

修复方案

方案1:增加失败判断逻辑(推荐)

仅当8次机会全部用完未猜对时才输出FAILURE,修改后的完整代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
    
int main()
{
    int num, rnum, times = 1;
    srand(4383);
    rnum = rand() % 300 + 1;
    while(times <= 8)
    {
        printf("Guess the number random number between 1-300: ");
        scanf("%d", &num);
        if (num < rnum)
        {
            printf("The random number is bigger\n");
        }
        if (num > rnum)
        {
            printf("The magic number is smaller\n");
        }
        if (num == rnum)
        {
            printf("RIGHT!");
            break;
        }
        times++;
    }
    // 仅当用完8次机会未猜对时输出失败
    if (times > 8)
    {
        printf("FAILURE!");
    }
    return 0;
}

方案2:猜对直接退出程序

不需要额外加判断,把猜对分支里的break替换为return 0;即可:

if (num == rnum)
{
    printf("RIGHT!");
    return 0; // 直接终止整个程序,不会执行后面的FAILURE打印
}

额外优化说明

原代码存在2处拼写错误,修改时已经同步修正:

  • 提示语里的numper改为number
  • 大小提示里的biger改为bigger

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:36:07