博舍

C语言编写猜数字游戏及随机数生成方法 c语言随机数生成1~100

C语言编写猜数字游戏及随机数生成方法

C语言编写猜数字游戏及随机数生成方法文章目录C语言编写猜数字游戏及随机数生成方法前言一、猜数字小游戏内容:步骤:代码的实现:二、随机数生成的方法总结前言

对于C语言初学者来说,当我们的翻开课本咕叽咕叽读完C语言概述后,就会紧接着面临C语言控制语句(顺序,选择和循环),然后不约而同都会面临用三大控制语句编写猜数字游戏的问题。这的确是一个比较容易编写的小游戏,但同时也是一个很好练习机会,不仅仅让我们充分利用所学知识完成对程序的编写,同时也引导我们思考如何用C语言生成随机数。

一、猜数字小游戏内容:

首先我们要了解一下什么是猜数字。顾名思义,就是随机指定一个数字,然后让人猜数,通过反馈的信息(猜大了或者猜小了)来逐渐锁定最终值。

步骤:

定义好我们程序的目标后,我们就要开始对程序进行设计,要有一个明确的步骤。1.首先我们需要提升游玩者体验,就应该有一个菜单。2.其次游玩者可能需要循环往复玩这个游戏,我们就应该将游戏放入循环体内。3.最后才是我们对于游戏具体的设计。在游戏具体设计内,我们需要让系统生成一个随机数,然后让游玩者输入一个数字,通过对二者的比较,反馈信息,以便让游玩者逐渐接近具体目标。

代码的实现:#define_CRT_SECURE_NO_WARNINGS//防止sancf报安全性错误#include//time()函数头文件#include//rand(),srand()函数头文件#include//printf(),scanf()函数头文件voidmenu()//进入游戏对菜单的打印{printf("*************************** ");printf("********1.play********** ");printf("********0.exit********** ");printf("*************************** ");}intmain(){intinput=0;//定义一个变量input,存放用户输入的值do{//函数可以简单理解为对一段代码的封装。menu();//这是菜单的打印,利用函数可以避免主函数过于冗长printf("请选择(1/0):>");//让用户输入1开始玩游戏,0则退出游戏scanf("%d",&input);switch(input){case1:game();//游戏具体实现break;case0:printf("退出游戏 ");break;default:printf("输入错误 ");}}while(input);//0为假,非0为真,真则会重新进入循环体,假则会退出循环体return0;}

然后就是对游戏具体实现的思考,首先我们要生成一个随机数,现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数,它们就是rand()和srand()函数。

voidgame(){srand((unsignedint)time(NULL));//为rand()函数重新“播种”,使得rand()产生随机值(rand()产生的随机值我们称为“种子”)发生变化(具体我们在第二节详细解释)intret=rand()%100+1;//生成的随机值1-100intguess=0;while(1){printf("请猜数字:>");scanf("%d",&guess);if(guess>ret){printf("猜大了 ");}elseif(guessprintf("猜对了 ");break;}}}

但实际上我们不太喜欢将rand()和srand()函数放得太近,因为这样子反复运行程序还是容易使得rand()函数产生相近的值,所以我们比较提倡将srand()函数放到主函数中,事实上每次用到rand()函数只需要srand()函数“播种”一次即可。接下来展示就是猜数字游戏所示全部代码:

#define_CRT_SECURE_NO_WARNINGS//防止sancf报安全性错误#include//time()函数头文件#include//rand(),srand()函数头文件#include//printf(),scanf()函数头文件voidgame(){intret=rand()%100+1;//生成的随机值1-100intguess=0;while(1){printf("请猜数字:>");scanf("%d",&guess);if(guess>ret){printf("猜大了 ");}elseif(guessprintf("猜对了 ");break;}}}voidmenu()//进入游戏对菜单的打印{printf("*************************** ");printf("********1.play********** ");printf("********0.exit********** ");printf("*************************** ");}intmain(){intinput=0;//定义一个变量input,存放用户输入的值srand((unsignedint)time(NULL));//为rand()函数重新“播种”,使得rand()产生随机值(rand()产生的随机值我们称为“种子”)发生变化(具体我们在第二节详细解释)do{//函数可以简单理解为对一段代码的封装。menu();//这是菜单的打印,利用函数可以避免主函数过于冗长printf("请选择(1/0):>");//让用户输入1开始玩游戏,0则退出游戏scanf("%d",&input);switch(input){case1:game();//游戏具体实现break;case0:printf("退出游戏 ");break;default:printf("输入错误 ");}}while(input);//0为假,非0为真,真则会重新进入循环体,假则会退出循环体return0;}

代码运行截图:

二、随机数生成的方法

接下来我们对刚刚展示的利用C语言生成随机数做一个具体解释。现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数,它们就是rand()和srand()函数。然后我们用MSDN软件查看一下对于rand()和srand()函数的表述:

1.intrand(void)Generatesapseudorandomnumber(生成伪随机数)Therandfunctionreturnsapseudorandomintegerintherange0toRAND_MAX(rand函数返回一个范围为0到RAND_MAX的伪随机整数)(C语言规定RAND_MAX值为32767)此时我们编写一个代码尝试一下:

voidmain(void){inti;for(i=0;i

c语言生成随机数(组)

intrand(void);根据一个数值按照某个公式推算出来的,这个数值称之为“种子”。随机生成一个位于0~RAND_MAX之间的整数。RAND_MAX它的值至少为32767。

种子在每次启动计算机时是随机的,但是一旦计算机启动以后它就不再变化了,根据公式推算出来的结果(也就是生成的随机数)就是固定的。

可以通过函数voidsrand(unsignedintseed);来重新播种。其中unsignedintseed可以通过time()函数获得srand((unsigned)time(0));之后再rand()即可。

若想获得随机数组

...for(i=0;iintram_arr[SIZE],count;for(count=0;count

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇