一.猜数字游戏的本质
猜数字游戏本质就是生成随机数,然后进行猜数字,最后判断正误,决定是否需要继续猜数字。
二. 生成随机数
1.rand函数
①rand函数会返回一个伪随机值,范围是0-32767
②代码实现:printf("%d",rand());
如上方代码,会生成伪随机数。
③但是这个随机数不是真正的随机数,仅仅为伪随机数。用编译器多次实现上述代码,不难会发现每次生成的随机数是一样的。
2.srand函数
①srand是用来初始化随机数的生成器。
②代码实现:void srand(unsigned int seed);//void表示函数不返回任何值。
写此函数代码时需要包括#include<stdlib.h>的头文件。
③具体解释:
程序在调用rand函数前,会调用srand函数。通过srand函数的参数seed来设置rand生成随机数时的种子。只要种子在变化,那么生成的随机数便会不伪。
④函数写法
srand(1); //左边括号内的1便是种子。
printf("%d",rand(1));
可以通过不断改变种子来改变随机数,使随机数不伪。当然如果种子固定的话,那么随机数就是固定的(伪随机数)。
3.time函数
①time函数的作用
因为上述生成随机数的方法太过于复杂,所以time函数可以方便的生成随机数。
②time函数的知识点
time函数用的是程序运行时间为种子,利用时间随时不断变化这一特性。先来生成一个一直变化的种子,从而生成随机数。
③代码实现
#include <stdio.h>
#include<stdlib.h> //调用rand函数需要此文件。
#include <time.h> //调用time函数需要此头文件。
int main()
{
srand((unsigned int)time(NULL)); //定义一个无符号变量time,time后面括号的NULL可以直接返回当前之间值
printf("%d",rand());//用time生成的种子,调用rand函数来获取随机数。
return 0;
}
④设置随机数的范围
- 原理:利用a除以b的余数一定比b小这个数学知识
- 代码实现举例:
- 生成0-99的随机数rand()%100。
- 生成一个1-100的随机数rand()%100+1。
- 生成一个100-200的随机数100+rand()%(200-100+1)。
- 生成一个a-b的随机数a+rand()%(b-a+1)
三.游戏代码的实现
#include < stdio.h >
#include < stdlib.h >//调用rand函数需要此头文件
#include < time.h >//调用time函数需要此头文件
void menu () //定义菜单函数,提高代码的效率
{
printf("******************\n");
printf("******1.play******\n");//若选择1则游戏开始
printf("******0.exit******\n");若选择0则退出游戏
printf("*******************\n");//第一行和第四行的*起修饰作用。
}
void game ()//定义game函数,提高代码效率。
{
int r=rand()%100+1;//获取0-100的随机数
int guess=0;//定义变量guess并且初始化。
while(1)//设置一个死循环,知道猜对便会退出。
{
printf("请猜数字\n");//为了方便玩家的游玩
scanf("%d",&guess);//读取玩家输入的值,置于guess变量中。
if(guess>r)//如果玩家猜的值大于生成的随机值
printf("猜大了\n");//则输出猜大了,方便玩家进行下一步操作。
else if(guess<r)//如果玩家猜的值小于生成的随机值。
printf("猜小了\n");//则输出猜小了,方便玩家进行下一步操作。
else
{
printf("猜对了\n");//否则说明玩家猜对了,那么输出猜对了。
break;//当猜对时,结束死循环。
}
}
}
int main
{
int input=0;
srand((unsigned int )time(NULL));//使用time函数用来生成真正意义的随机数
do//运用do while循环,使得一上来屏幕就打印菜单等信息。
{
menu();//调用菜单函数
printf("请选择:");//方便玩家输入0或者1,以方便代码下一步运行。
scanf("%d",&input); //读取玩家输入的值
switch(input)//用switch语句对玩家输入不同的值进行分类讨论。
{
case 1://当玩家输入1时,
{
game();//调用game函数,游戏开始
break;
}
case 0://当玩家输入0时,
{
printf("退出游戏\n");//不调用game函数,打印退出游戏,提醒玩家已退出游戏。
break;
}
default://如果玩家输入0或者1以外的其它值,
{
printf("输入错误");//则输出输入错误,提醒玩家重新输入。
break;
}
}
}
while(input)
return 0;
}
标签:rand,函数,time,C语言,初识,随机数,printf,玩家,游戏 From: https://blog.csdn.net/WANGxinhua4321/article/details/144290010