m0_53989813 2021-08-14 19:42 采纳率: 73.7%
浏览 65
已结题

猜数字游戏,运行之后显示部分正确,有测试点通不过,请问究竟是哪里错了??

猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。

输入格式:
输入第一行中给出两个不超过100的正整数,分别是游戏机产生的随机数、以及猜测的最大次数N。最后每行给出一个用户的输入,直到出现负数为止。

输出格式:
在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。


#include <iostream>
using namespace std;
void Judgegame(int N,int n)
{
    int m,i,sum=0;
    for(i=0;i<=N;i++)
    {
        cin>>m;
        sum++;
        if(m>=0)
        {
            if(m==n)
            {
                if(sum==1) cout<<"Bingo!";
                if(sum<=3&&sum>1) cout<<"Lucky You!";
                if(sum>3&&sum<=N) cout<<"Good Guess!";
                break;
            }
            if(m>n)
            {
                cout<<"Too big"<<endl;
            }
            if(m<n)
            {
                cout<<"Too small"<<endl;
            }
        }
        if(m<0)
        {
            cout<<"Game Over!";
            break;
        }
    }
    if(sum==0)
    {
         cout<<"Game Over!";
    }
    
}
int main()
{
    int N,n;
    cin>>n>>N;
    Judgegame(N,n);
    return 0;
}
  • 写回答

4条回答 默认 最新

  • 六年级初中生 2021-08-14 20:51
    关注

    不能用sum变量来判断次数,得单独来个flag

    #include <iostream>
    using namespace std;
    void Judgegame(int N,int n)
    {
        int m,i,sum=0;
        bool flag = false;
        for(i=0;i<=N;i++)
        {
            cin>>m;
            sum++;
            if(m>=0)
            {
                if(m==n)
                {
                    flag = true;
                    if(sum==1) cout<<"Bingo!";
                    if(sum<=3&&sum>1) cout<<"Lucky You!";
                    if(sum>3&&sum<=N) cout<<"Good Guess!";
                    break;
                }
                if(m>n)
                {
                    cout<<"Too big"<<endl;
                }
                if(m<n)
                {
                    cout<<"Too small"<<endl;
                }
            }
            if(m<0)
            {
                cout<<"Game Over!";
                break;
            }
        }
        if(!flag)
        {
             cout<<"Game Over!";
        }
    }
    int main()
    {
        int N,n;
        cin>>n>>N;
        Judgegame(N,n);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月22日
  • 已采纳回答 8月14日
  • 创建了问题 8月14日

悬赏问题

  • ¥20 matlab计算中误差
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊