猜数字游戏

猜数字游戏是令系统随机产生一个100以内的正整数,用户输入一个数对其进行猜测,
需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),
还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。

程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;
如果3次以内猜到该数,则提示“Lucky You!”;
如果超过3次但是在N(N>3)次以内(包括N次)猜到该数,则提示“Good Guess!”;
如果超过N次都没有猜到,则提示“Game Over”,并结束程序。
  
如果在达到N次之前,用户输入一个负数,也输出“Game Over”,并结束程序。
  
输入格式:
输入一行中给出2个不超过100的正整数,
分别是系统产生的随机数、以及猜测的最大次数N。
随后每行给出一个用户的输入,直到出现负数为止。
  
输出格式: 
在一行中输出每次猜测相应的结果,
直到输出猜对的结果或“Game Over”则结束。
  
  输入样例:
  58 4
  70
  50
  56
  58
  60
  -2
  
  输出样例: 
  Too big 
  Too small
  Too small
  Good Guess! 

C语言代码如下:

#include<stdio.h>

int main()
{
    int R,N;
    int n,t=1,sum=0,digit,count=1;
    
    /* 输入随机数R和猜测的最大次数N  */
    scanf("%d %d",&R,&N);
    
    /* 连续读入一列数字,
    当读入的数字是负数,把它标记为数字0
    当读入的数字小于随机数R,把它标记为数字1
    当读入的数字等于随机数R,把它标记为数字2
    当读入的数字大于随机数R,把它标记为数字3
    
    并且按照读入的先后顺序,第一个读入的数字放在个位,
    第二个读入的数字放在十位,第三个读入的数字放在百位,依次类推 */ 
    do
    {
        scanf("%d",&n);
        
        if(n==R)
        {
            sum+=2*t;
        }
        else if(n>R)
        {
            sum+=3*t;
        }
        /* 易错点:在C语言中,0<n<R表示(0<n)<R,(0<n)的结果是0或者1  */
        else if(0<n && n<R)
        {
            sum+=1*t;
        }
        else
        {
            sum+=0*t;
        }
            
        t*=10;
            
    }while(n>0);
            
    /* sum除以10,取余数
       如果余数等于0,表示第一个输入的数字是负数,输出Game Over
       如果余数等于1,表示第一个输入的数字小于随机数,输出Too small
       如果余数等于2,表示第一个输入的数字等于随机数,输出Bingo!
       如果余数等于3,表示第一个输入的数字大于随机数,输出Too big
       
       计数器count++
       sum除以10,取商
       sum除以10,取余数
       
       如果余数等于0,表示第二个输入的数字是负数,输出Game Over
       如果余数等于1,表示第二个输入的数字小于随机数,
       同时判断计数器 count是否小于等于猜测的最大次数N,
       无论余数等于1还是2还是3,当count大于N时,输出Game Over
       余数等于1,并且count<=N,输出Too small
       余数等于2,并且count<=3,输出Lucky You! 
       余数等于2,并且count>3,并且count<=N,输出Good Guess!
       余数等于3,并且count<N,输出Too big
        
       以此类推*/ 
    while(sum>=0)
    {
        digit=sum%10;
        
        if(digit==2 && count==1)
        {
            printf("Bingo!\n");
            break;
        }
        else if(digit==2 && count<=3)
        {
            printf("Lucky You!\n");
            break;
        }
        else if(digit==2 && 3<count && count<=N)
        {
            printf("Good Guess!\n");
            break;
        }
        else if(digit==3 && count<=N)
        {
            printf("Too big\n");
        }
        else if(digit==1 && count<=N)
        {
            printf("Too small\n");
        }
        else
        {
            printf("Game Over\n");
            break;
        }
        
        count++;
         
        sum/=10;
        
    }
    
    return 0;
    
}

情况(一)

结果

情况(二)

情况(三)

情况(四)

情况(五)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值