问题描述
- 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("这是一个猜数字游戏!游戏开始时!
");
srand(time(NULL));while(true) { chones = 1 + rand() % limit; printf("这是一个猜数字游戏(范围1~20) "); for( unsigned int count = max ; count > 0 ; count-- ) { printf("你还有%u 次机会! ", count); scanf("%u",&guess); if(guess == chones) { printf("恭喜你猜对了! "); break; } if(guess < 1||guess > 20) printf("请输入正确范围(1~20) "); else printf("对不起!你猜错了! "); } printf("程序结束!你没有猜对!这个数是:%u 继续? (Y or N) ",chones); scanf(" %c", &answer); if(tolower(answer) == 'n') break; } printf("程序结束! "); 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++)后
为什么三次猜不对继续猜的时候出现问题?望大神指教!(纸上得来终觉浅,绝知此事要躬行)
解决方案
问题1:break跳出的当前循环体,也就是for循环,接着执行的是打印 printf("程序结束!你没有猜对!这个数是:%u 继续? (Y or N)
",chones);
问题2:每一次的while循环产生一个随机幸运数字,三次猜测的是同一个幸运数字。
问题3:改为unsigned int count = 0;for(unsigned int i = 1 ; i <= count ; i++)后,count为0,for循环根本不执行。
解决方案二:
一.题目:猜数字游戏
???功能要求:计算机产生随机数,猜中即胜,猜不中,提示是大了,还是小了,继续猜,直到猜到,给出所用时间、次数和评语(要求评语多样性、滑稽)。
???界面要求:简洁
?
二.设计概要
该程序是由:??????1.生成随机数函数?......
答案就在这里:猜数字游戏(c语言程序)
----------------------
解决方案三:
假如第一次猜对了,执行了break; break 语句的功能是跳出当前的循环,所以猜对后会直接退出程序。输出的提示:恭喜你猜对了! 估计是看不到的,因为没有 getch() 之为类的语句。
解决方案四:
问题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 次机会!
", max - count);