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

#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++)后
为什么三次猜不对继续猜的时候出现问题?

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

c

4个回答

问题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循环根本不执行。

u013346305
LUCKEYMAN 回复qq_24432057: count改为3,按照你的写法,三次都猜错的话,如果选择继续猜,则接下来执行的是while循环,这样幸运数字会被刷新。
接近 5 年之前 回复
qq_24432057
qq_24432057 那么在开始时将count赋值为3呢?
接近 5 年之前 回复

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

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

91program
91program 建议你调试一下代码,单步调试,这样你就可以看到执行的步骤,例如 break 后执行哪一句,都可以看到的。
接近 5 年之前 回复
91program
91program 第一个问题的回复有点问题,break; 只是跳出了 for 循环,从而执行 while 循环。所以可以猜下一次。
接近 5 年之前 回复
91program
91program 幸运数字是怎么随着所猜的次数变化而变化的? 因为你每次循环都执行了 chones = 1 + rand() % limit;,产生了一个新的随机数。
接近 5 年之前 回复

问题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);



Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐