本节的目的在于用之前学到的选择和循环语句为基础,写出一个猜数字游戏
1.随机数生成
1.1 rand 函数原型:int rand(void);
C语言提供一个函数rand(),用于生成随机数
rand生成的是伪随机数,范围是0~RAND_MAX, RAND_MAX的值跟编译器有关系,但一般都是32767
通过运行上面的程序可以看出生成的随机数在一次运行中的5次生成看似是随机的,但是两次运行发现生成的5个随机数是一样的.
这就是rand()函数生成的随机数是伪随机数的表现,真正的随机数是无法预测下一次生成的数是什么的,之所以出现伪随机数的原因在于rand函数是对一个叫“种子”的基准值进行生成的随机数,而每次生成随机数的种子都是同样的,是1,如果想让随机数不同就要让种子不同。
引用头文件<stdlib.h>
1.2 srand 函数原型:void srand(unsigned int seed);
程序在调用rand函数之前先调用srand函数,通过srand函数的参数seed来设置rand函数的种子,将种子设置成时刻变化的时间,这样就解决问题了。
引用头文件<stdlib.h>
1.3 time 函数原型:time_t time(time_t* timer);
time函数返回的是1970年1月1日0时0分0秒到现在程序运行时间的差值,单位是秒,如果timer是NULL,就只返回这个时间的差值。time返回的这个时间差也被叫做:时间戳。
想要使用time函数要引用头文件<time.h>
这样写就生成了真正的随机数了。
2.猜数字游戏
游戏规则:电脑从1~100中随机生成一个数字,玩家去猜,猜大、猜小,电脑都给予反馈引导玩家猜到数字,直到玩家猜出正确数字。
2.1 游戏菜单
首先,生成一个游戏菜单让玩家选择是否开始游戏,每玩完一轮之后再次打印菜单询问玩家是否玩下一把。
用do……while语句让菜单直接无循环条件的出现一次,之后根据玩家是否退出游戏的选择(input)来决定是否退出循环,当玩家不小心输入错误时程序也要给出相应的提醒反馈(default)
为了代码更加干净整洁,将菜单的打印用menu()函数封装起来。
同理,将游戏运行的逻辑也用一个函数game()封装起来,因为它们都不需要返回任何值,所以函数类型时void型。
2.2 game()
2.2.1生成一个1~100之间的随机数
首先在进入主函数的时候就设置好种子,然后再在game函数中定义好了随机数
敲黑板:a + rand()%(b - a + 1)
如果要生成a~b之间的随机数,使用公式:
a + rand()%(b - a + 1)
2.2.2猜数字
2.3运行游戏
很好,非常完美。