目录
1.思路
实现一个猜数字游戏,首先我们应该要产生一个随机数,我们可以调用rand()这个函数,然后我们就应该进行猜数字游戏了,我们猜的时候,数字要有一个范围,如果数字没有范围那么我们是很难猜对的,猜数字的时候得有吧!提示我们猜的数字是大了还是小了吧,不然我们怎么进行下一次输入,猜数字的时候应该要猜多次,猜一次猜对的概率是很小的吧,所以我们得有一个循环来让我们来反复输入数字直到猜对为止吧!按照我们的思路让我们来实现一下这个小游戏!
2.代码实现
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
void menu()
{
printf("***********************************\n");
printf("***********猜数字游戏**************\n");
printf("*********1.play 0.exit********\n");
printf("***********************************\n");
}
void game()//游戏逻辑实现
{
int guess = 0;//
int secret = rand()%100+1;
while (1)//先死循环,猜对的时候用break结束循环
{
printf("请输入数字:>\n");
scanf("%d", &guess);//接收要猜的数字
if (secret < guess)
{
printf("猜大了!\n");
}
else if (secret > guess)
{
printf("猜小了!\n");
}
else
{
printf("恭喜你猜对了!%d\n", secret);
break;//结束程序
}
}
}
int main()
{
srand((unsigned)time(NULL));
int input = 0;
do
{
menu();//打印菜单
//提示一下
printf("请选择:>\n");
scanf("%d", &input);//接收输入的选择
switch (input)
{
case 1:
game();//猜数字游戏
break;
case 0:
printf("退出游戏!\n");
break;
default:
printf("输入错误,请重新输入:\n");
break;
}
} while(input);
return 0;
}
3.细节讲解
3.1使用的函数
因为要产生随机数所以要使用rand()函数,使用rand函数要使用srand()函数来设置随机数生成器,而srand()函数需要设置随机数生成起点,有点好笑,我们需要随机数现在却需要给srand()给一个变化的数字作为随机数,变化的数字我们可能最先想到的是时间,因为时间每时每秒都是变化的,所以我们又需要time()函数来获取时间戳(时间戳是指一个字符序列,唯一地标识某一刻的时间,现在的时间戳是从1970.1.1.0:0:0),来设置随机数生成起点。在程序中只需要设置一次不需要设置多次不然每次我们猜的数字都是变化的。
所以我们需要的头文件有stdlib .h stdio.h time.h
3.2rand函数和srand函数的使用
srand()函数需要我们给一个无符号的整数,但是time函数返回的数是一个有符号的六十四位数字,所以我们需要强制类型转换。rand函数产生的数字是从0 —— RAND_MAX(32767),但是我们只需要1到100的数字所以要对rand产生的数组%100+1;因为while是死循环所以当我们猜对的时候需要用break语句来结束循环。