这篇文章我简要介绍srand、rand、time函数的使用,并用他们一起来完成一个猜数字游戏
目录
一、随机数产生函数
1、rand函数,
他就是我们今天用来生成随机数的重要嘉宾,这个函数接受一个种子,就可以根据这个种子产生一系列用算法实现的随机数;
2、srand函数,
这个函数就是为rand函数提供种子的函数,他们两个要一起使用,我们可以在srand函数中放置一个数,这样rand函数就可以根据种子产生随机数了,比如我们给个100,srand(100);这样我们就可以得到一系列由100计算得来的随机数了;
3、time函数,
rand函数确实是产生了随机数,但是这个种子是固定的,所以rand函数产生的数每次都是一样的,但是同样的计算结果,我们只需让种子每次不一样就够了,于是,我们就可以将时间放到srand函数中种子的位置;例如这样:srand((unsigned int )time(NULL))。至于为什么这么写大家可以去看看我的上一篇博客,里面对这三个函数的使用都有了更详细的介绍;
二、猜数字游戏
我们将猜数字游戏分为几个部分
1.游戏菜单。
2.游戏进入、退出程序
3.完成游戏运行本体(game函数的实现)
1.游戏菜单:
这样一个简单的游戏菜单就做好了,
2.游戏进入、退出程序
我们可以设置一个while循环,可以让用户不停进行游戏,直到用户想退出游戏,这样,我们可以配合选择结构,来让用于输入不同的值,进行不同的程序;
int main()
{
int num;
int guess;
printf ("这是一个猜数字游戏 ,你可以选择以下选项:\n\n");
do
{
mean(); //打印菜单
printf ("请输入你的数:\n");
scanf ("%d",&guess); //用来接受用户命令,变量guess
switch (guess)
{
case 1: game();break; //输入1,游戏开始
case 0: printf ("游戏退出成功:\n");break; //输入0,退出程序
default : printf ("\n\n请输入正确的数:\n");break; //输入不是选单中的数,让用户重新选择
}
}while (guess);
//直到用户输入的guess值是0,停止循环
return 0;
}
3、完成游戏运行本体(game函数的实现)
因为我们要使用time、rand、srand函数,所以要引相对应的头文件<time.h>和<stdlib.h>。
设置一个while循环,将rand函数生成的数定在范围1—100中间,并且根据用户输入的值判断大于、小于、等于rand函数生成的值,大于则提示用户输入过大,小于则提示输入过小,等于则恭喜用户猜对,并且输入用户猜了多少次,再结束game函数,退到主函数的循环程序中,继续循环,直至用户输入0退出程序;
我们将在程序运行阶段就利用time函数产生一个数作为srand的值,使rand函数每次开始的种子不同,产生的值不用,让rand产生的值更加随机。
下面来具体实现game函数
void game ()
{
int input; //用户输入的数字
int count=0; //统计用户输入次数
srand ((unsigned int)time(NULL));//种子生成
int num1=rand()%100+1; //随机数num1,范围是1——100
printf ("游戏开始,请输入一个数:\n");
while (1)
{
scanf ("%d",&input); //用户输入数字
if (input>num1) //猜大的提示
{
count ++;
printf ("猜大了\n");
}
else if (num1>input) //猜小的提示
{
count++;
printf ("猜小了\n") ;
}
else //猜对之后的鼓励
{
printf ("*******恭喜您终于猜对了*****\n\n");
printf ("您一共猜了%d次,\n\n\n",++count);
for (int j=0;j<count;j++)
printf (",good good good\n");
printf ("\n\n\n");
break;
}
}
好的 ,接下来我们将在程序运行阶段就利用time函数产生一个数作为srand的值,使rand函数每次开始的种子不同,产生的值不同,让rand产生的值更加随机。(为什么将srand放在主程序调用一次rand函数产生的值就更随机这件事,如果还不理解可以去看看我的上篇博客,里面有更详细的模拟介绍)
并且将3个函数关联起来使用,则可以得到猜数字游戏简化版,代码如下:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void mean()
{
printf ("******************************\n");
printf ("*****1:游戏开始 0:退出游戏\n");
printf ("******************************\n");
}
void game ()
{
int input; //用户输入的数字
int count=0; //统计用户输入次数
int num1=rand()%100+1; //随机数num1,范围是1——100
printf ("游戏开始,请输入一个数:\n");
while (1)
{
scanf ("%d",&input); //用户输入数字
if (input>num1) //猜大的提示
{
count ++;
printf ("猜大了\n");
}
else if (num1>input) //猜小的提示
{
count++;
printf ("猜小了\n") ;
}
else //猜对之后的鼓励
{
printf ("*******恭喜您终于猜对了*****\n\n");
printf ("您一共猜了%d次,\n\n\n",++count);
for (int j=0;j<count;j++)
printf (",good good good\n");
printf ("\n\n\n");
break;
}
}
int main()
{
srand ((unsigned int)time(NULL));//种子生成
int num;
int guess;
printf ("这是一个猜数字游戏 ,你可以选择以下选项:\n\n");
do
{
mean(); //菜单的打印
printf ("请输入你的数:\n");
scanf ("%d",&guess); //用来接受用户命令,guess
switch (guess)
{
case 1: game();break; //输入1,游戏开始
case 0: printf ("游戏退出成功:\n");break; //输入0,退出程序
default : printf ("\n\n请输入正确的数:\n");break; //输入不是选单中的数,让用户重新选择
}
}while (guess);
//直到用户输入的guess值是0,停止循环
return 0;
}
以上就是本篇文章的全部内容了,希望大家希望,大家一起学习C语言,一起努力,冲冲冲。