qq_24432057
qq_24432057
2015-09-18 09:08
采纳率: 42.9%
浏览 3.3k

c语言程序猜数字游戏程序

#include
#include
#include
#include
#include
int main(void)
{
unsigned int max = 3;
unsigned int guess = 0;
unsigned int chones = 0;
unsigned int limit = 20;
char answer = 'n';
printf("这是一个猜数字游戏!游戏开始时!\n");
srand(time(NULL));

while(true)
{


    chones = 1 + rand() % limit;
    printf("这是一个猜数字游戏(范围1~20)\n");
    for(  unsigned int count = max ; count > 0 ; count-- )
    {
    printf("你还有%u 次机会!\n", count);
    scanf("%u",&guess);
    if(guess == chones)
        {
        printf("恭喜你猜对了!\n");
        break;
        }

     if(guess < 1||guess > 20)
    printf("请输入正确范围(1~20)\n");
    else
    printf("对不起!你猜错了!\n");
    }

    printf("程序结束!你没有猜对!这个数是:%u 继续? (Y or N)\n",chones);
    scanf(" %c", &answer);
     if(tolower(answer) == 'n')
    break;
}
    printf("程序结束!\n");
    return 0; 

}

这是一个猜数字游戏,共有3次机会,3次猜不到提示幸运数字并询问是否继续
问题1: 假如第一次猜对了,执行了break; 那么程序跳转到哪?
问题2: 幸运数字是怎么随着所猜的次数变化而变化的?
问题3:这两行语句unsigned int max = 3;for( unsigned int count = max ; count > 0 ; count-- )改为unsigned int count = 0;for(unsigned int i = 1 ; i <= count ; i++)后
为什么三次猜不对继续猜的时候出现问题?

望大神指教!(纸上得来终觉浅,绝知此事要躬行)

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • CSDNXIAOS
    Robot-S 2015-09-18 09:11

    一.题目:猜数字游戏
       功能要求:计算机产生随机数,猜中即胜,猜不中,提示是大了,还是小了,继续猜,直到猜到,给出所用时间、次数和评语(要求评语多样性、滑稽)。
       界面要求:简洁
     
    二.设计概要
    该程序是由:      1.生成随机数函数 ......
    答案就在这里:猜数字游戏(c语言程序)
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    点赞 评论
  • 91program
    91program 2015-09-18 09:20

    假如第一次猜对了,执行了break; break 语句的功能是跳出当前的循环,所以猜对后会直接退出程序。输出的提示:恭喜你猜对了! 估计是看不到的,因为没有 getch() 之为类的语句。

    点赞 评论
  • u013346305
    LUCKEYMAN 2015-09-18 10:47

    问题1:break跳出的当前循环体,也就是for循环,接着执行的是打印 printf("程序结束!你没有猜对!这个数是:%u 继续? (Y or N)\n",chones);
    问题2:每一次的while循环产生一个随机幸运数字,三次猜测的是同一个幸运数字。
    问题3:改为unsigned int count = 0;for(unsigned int i = 1 ; i <= count ; i++)后,count为0,for循环根本不执行。

    点赞 评论
  • u010030181
    QIUSQJF 2015-09-18 14:38

    问题1: 假如第一次猜对了,执行了break; 那么程序跳转到哪?

     while(1)
    {
        //do something...
        break;  //此处跳出while循环 
    }
    
    while(1)
    {
        for(int i = 1; i < 10; ++i)
        {
            //do something...
        }
    
        //do something...
        break;  //此处跳出while循环,因为for循环并没有把break包含在内    
    }
    
    while(1)
    {
        for(int i = 1; i < 10; ++i)
        {
            //do something...
            break;  //跳出for循环 
        }
    
        //do something...
        break;  //跳出while循环 
    }
    
    //始终记住跳出的是包含它(break)最近的循环,还有可以搜下contiune的区别 
    

    问题2: 幸运数字是怎么随着所猜的次数变化而变化的?
    你可以搜下srand(time(NULL));,使用和不使用的时候会对rand()造成什么效果

     问题3:这两行语句unsigned int max = 3;for( unsigned int count = max ; count > 0 ; count-- )改为unsigned int count = 0;for(unsigned int i = 1 ; i <= count ; i++)后
    为什么三次猜不对继续猜的时候出现问题?
    for(  unsigned int count = 0 ; count < max; count++ )
    printf("你还有%u 次机会!\n", max - count);
    
    
    
    
    
    点赞 评论

相关推荐