猜数字游戏(c语言)
编译环境:vs2013
题目:
系统随机给出一个数字,限制在一定范围内,用户进行猜测,会给用户提示大小。
思路:
用户在程序之外输入一个随机数;
如果比随机数大,就输出太大了;
如果比随机数小,就输出太小了;
如果与随机数相等,就输出你猜中了。
首先,生成一个随机数。我们要明确获得随机数,需要使用rand函数,rand() 会随机生成一个位于 0 ~ RAND_MAX 之间的整数,我们不需要知道RAND_MAX的值只需要把它当作一个很大的值。别忘记引用time()函数的头文件:
#include<stdlib.h>
但是,我们在使用中会发现,随机获得的数每次都一样,这是因为随机数是根据另一个值得到的,这个值叫做“种子”,种子会在每次启动计算机时随机一个,但是启动之后它就不会改变。我们为了避免每次随机到的数一样,需要通过srand()函数来重新“播种”,这样种子就会发生改变。
我们在实际开发中可以用系统时间来做种子,种子不同,最终的随机数也就会不同。
#include<stdlib.h>
#include<time.h>
int game()
{
srand(time(NULL));
int num=rand()%100; //大于100的数字最后都会被取余下来成0~99的数字
}
为了限定一个不要太大的范围,可以通过%100,将范围限定在0~99之间。
之后,就是运用if条件语句判断,如果输入的数大于生成数—>提示"太大了";如果输入的数小于生成数—>提示"太小了";如果输入的数等于生成数—>提示"恭喜你猜对了!"。
主体:
我们可以先设置一个菜单
void menu()
{
printf("**********************************\n");
printf("***** 1、play *****\n");
printf("***** 0、exit *****\n");
printf("**********************************\n");
}
然后编写游戏模块
int game()
{
srand(time(NULL));
int num=rand()%100;
while(1)
{
int input;
printf("请输入你猜测的数字:");
scanf("%d",&input); //注意:scanf的%d后面没有空格或\n
if(input>num)
{
printf("太大了\n");
continue;
}
if(input<num)
{
printf("太小了\n");
continue;
}
printf("恭喜你猜对了!\n");
break;
}
return 0;
}
然后是主函数部分
#include<stdlib.h>
#include<time.h>
#include<stdio.h>
int main()
{
int input=0;
do
{
menu();
printf("请选择:\n");
scanf("%d",&input);
switch(input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
bresk;
default:
printf("输入错误\n");
break;
}
}while(input);
return 0;
}
运行结果
猜数字游戏逻辑比较简单,但我们需要搞清楚每个细节,不断积累自己的代码量。