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

如何修复C++编写的0-100猜数字游戏运行2次就终止的问题

注:代码为瑞典语编写

问题原因

  • 缺少循环逻辑:当前代码的判断逻辑仅顺序执行一次,最多只会收集2次用户输入就直接结束,无法持续响应猜数操作直到用户猜对
  • 随机数生成逻辑错误:nyttal函数传入的区间参数n未被使用,当前返回的随机数范围并不是预期的0~100区间

修复后代码

// 生成0~n区间的随机数
int nyttal(int n){
    return rand() % (n + 1);
}

//Lak Lägg
void utforEnSpelomgang(){
    const int n = 100;
    const int datornstal = nyttal(n);
    int antalUtfardaGissningar = 0;  // 用户的猜测次数
    int g = -1; // 初始化猜测值,保证不等于0~100区间的目标值

    cout << "Datorn tänker på ett tal mellan noll och " << n << ". Gissa vilket!" << endl;

    // 未猜对则持续循环
    while (g != datornstal) {
        cin >> g;
        antalUtfardaGissningar++;

        if(g < datornstal){             
            cout << "Mindre" << endl;
            cout << "Antal utfärde gissningar: " << antalUtfardaGissningar << endl;
        } else if(g > datornstal){     
            cout << "Större" << endl; 
            cout << "Antal utfärde gissningar: " << antalUtfardaGissningar << endl;
        } else {
            cout << "Du gissade rätt" << endl;
            cout << "Antal utfärde gissningar: " << antalUtfardaGissningar << endl;
        }
    }
    //Lägg
}

核心修改说明

  • 新增while循环包裹猜数、判断全流程,只要用户猜测值不等于目标值就持续运行
  • 修正nyttal函数逻辑,根据传入的参数n生成对应区间的随机数
  • 调整计数逻辑位置,每次用户输入后统一计数,避免重复代码
  • 把并列if改为else if分支,减少不必要的重复判断

额外提示:如果需要每次运行程序生成的目标数字不重复,可在程序入口main函数的最开头添加随机数种子初始化代码:
srand((unsigned int)time(NULL));
并引入对应头文件#include <time.h>。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:45:03