
既然我们已经学习了选择和循环接下来让我们开始第一个小游戏来提升自己的能力。文章目录1. rand 与 srand3. 猜数字游戏3.1 设置随机数3.2 代码总览4. 总结4.1 三个函数的作用4.2 猜数字游戏的关键点1. rand 与 srand首先我们需要头文件stdlib.h来使用这两个函数。intrand(void);rand 函数可以生成随机数用于生成一个伪随机整数。实际上它每次生成的数都是相同的真正的随机数是无法预测下一个值是多少的。而 rand 函数是对一个叫“种子”的基准值进行运算生成的随机数。因此我们需要 srand 来帮助我们设置随机数种子。cvoid srand (unsigned int seed);程序中在调用 rand 函数之前通常会先调用 srand 函数通过传入一个种子参数 seed 来初始化随机数生成器。只要种子不同rand 生成的随机数序列就会随之变化。 但是 srand 的种子如果是随机的rand 就能生成随机数在生成随机数的时候又需要一个随机数这时我们就需要 **time** 来帮助我们。 # 2. time首先我们需要头文件 **time.h**。 c time_t time (time_t* timer);time函数返回当前的日历时间实际表示从 1970 年 1 月 1 日 0 时 0 分 0 秒到当前程序运行时刻之间的秒数差。因此如果 timer 是 NULL就只返回这个时间的差值。我们可以靠它来生成种子。time 函数返回的这个时间差也被叫做时间戳。3. 猜数字游戏3.1 设置随机数由于生成的数是介于 0 到 RAND_MAX 之间的整数所以%100保留0-991保留1-100。rand()%1001;如果要生成 a~b 的随机数方法如下arand()%(b-a1)3.2 代码总览#includestdio.h#includetime.h#includestdlib.hvoidmenu(){printf(_________\n);printf(猜数字游戏\n);printf(1.开始游戏\n);printf(0.退出游戏\n);printf(_________\n);}voidgame(){intnumrand()%1001;intscan0;while(1){scanf(%d,scan);if(numscan){printf(猜小了\n);}elseif(numscan){printf(猜大了\n);}else{printf(猜对了\n);break;}}}intmain(){intput0;do{srand((unsignedint)time(NULL));menu();scanf(%d,put);if(put1){printf(请开始猜数字\n);game();}elseif(put0){printf(游戏已经退出\n);}else{printf(输入错误请重新输入\n);}}while(put);return0;}4. 总结本节把文章中用到的rand、srand、time以及猜数字游戏的关键点做一个梳理。4.1 三个函数的作用srand(unsigned int seed)设置随机数种子。种子不同rand生成的随机数序列就会不同。rand()根据当前种子生成一个伪随机整数。若要生成 1~100 的整数可用rand() % 100 1。time(time_t* timer)返回当前时间戳即从 1970 年 1 月 1 日 0 时 0 分 0 秒到当前时刻的秒数。传入NULL时只返回这个差值因此常用它来生成种子。通常的初始化写法如下srand((unsignedint)time(NULL));4.2 猜数字游戏的关键点在main中先调用一次srand完成种子初始化避免每次都重新设置。使用rand() % 100 1生成 1~100 的随机数。通过while循环不断读取玩家输入并比较大小猜中后用break退出。结合菜单和do...while让玩家可以多次开始游戏或选择退出。