标题:猜数字游戏,已写代码求解
取消只看楼主
夜幕0
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-5-4
结帖率:100%
已结贴  问题点数:20 回复次数:5 
猜数字游戏,已写代码求解
猜数字游戏是令游戏机随机产生一个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”则结束。
输入样例:
58 4
70
50
56
58
60
-2
输出样例:
Too big
Too small
Too small
Good Guess!




第一部分是我自己写的提交了好多次都是有错误,能够正常输出样例,考虑到次数为0的可能,不知道是不是else顺序没排好的问题,找不到本质上的区别求大神指点!
(排除EOF的作用)
下面另外一段是参考答案
#include <stdio.h>
int main()
{
    int num,a;
    int N;
    scanf("%d %d",&num,&N);
    int i=0;
        if(N==0){
            printf("Game Over\n");
        }
    while (i<N){
        i++;
        scanf("%d",&a);
        if(a<0){
            printf("Game Over\n");break;
        }
        if(a == num && i<=3){
            printf("Lucky You!\n");break;
        }
        if(a == num && i>3 && i<=N){
            printf("Good Guess!\n");break;
        }
        if(a == num &&i==1){
            printf("Bingo!\n");break;   
        }
        if(a != num &&i == N){
              printf("Game Over\n");break;   
        }else     if(a>num){
            printf("Too big\n");
        }else         if(a<num){
            printf("Too samll\n");
        }
      }
      return 0;
    }



参考答案:
#include<stdio.h>
int main()
{
  int m,n;
  scanf("%d%d",&m,&n);
  int num;
  int s=0;
  while(scanf("%d",&num)!=EOF)
  {
    s=s+1;
    if(s>n||num<0)
    {
      printf("Game Over\n");
            break;
    }
    else
    {
      if(num>m)printf("Too big\n");
      else if(num<m)printf("Too small\n");
      else if(num==m&&s==1)
      {
        printf("Bingo!\n");
                break;
      }
      else if(num==m&&s<=3)
      {
        printf("Lucky You!\n");
                break;
      }
      else
      {
        printf("Good Guess!\n");
                break;
      }
    }
  }
  return 0;
}
搜索更多相关主题的帖子: 输入 int num printf break 
2019-05-04 19:15
夜幕0
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-5-4
得分:0 
回复 2楼 rjsp
改了一下
if(a == num && i<=3 && i!=1){
            printf("Lucky You!\n");break;
        }
但是提交了好像还有什么条件没达到

2019-05-05 12:17
夜幕0
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-5-4
得分:0 
回复 6楼 word123
超过N次自动输出game over程序结束
2019-05-05 18:14
夜幕0
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-5-4
得分:0 
回复 5楼 豆豆的滴
猜次数大于3次但小于N次输出Good Guess!,N(猜的次数)和num(正确的数字)是由测试系统主动输入,a是输入每次猜的数据。
2019-05-05 18:17
夜幕0
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-5-4
得分:0 
回复 9楼 word123
当次数到达第N次的时候没有猜到正确的数字就会输出game over,break;跳出循环,程序结束。
个人认为输入超过次数的数字是没有意义的,不过你好像提醒了我这一点

2019-05-06 13:29
夜幕0
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-5-4
得分:0 
回复 9楼 word123
主要还是看题目吧。在猜中数字后程序还能继续输入数字,在输入-2后程序结束,出这题的人是恶魔吧
感觉抓不到最后的点
输入样例:
58 4
70
50
56
58
60
-2
输出样例:
Too big
Too small
Too small
Good Guess!
2019-05-06 13:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-494537-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.149536 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved