
一、游戏要求1. 游戏提供一个菜单(1 - 玩游戏0 - 退出游戏)2. 选择1电脑自动生成1~100的随机数进入猜数字游戏的环节3. 玩家猜数字猜数字的过程中根据猜测数字的大小给出大了或小了的反馈直到猜对游戏结束4. 玩一次如果不过瘾可以选择继续玩。二、代码#define _CRT_SECURE_NO_WARNINGS #include stdio.h #include stdlib.h #include time.h void menu() { printf(--------猜数游戏--------\n); printf(------输入1开始游戏-----\n); printf(------输入0退出游戏-----\n); printf(-------请输入数字-------\n); } void game(int num) { int a 0; do { printf(请输入数字); scanf(%d, a); if (a num) { printf(猜大了\n); } else if (a num) { printf(猜小了\n); } else { printf(猜对了\n); } } while (a ! num); } int main() { int i 0; int r 0; srand((unsigned int) time(NULL)); do { menu(); scanf(%d, i); if (i 0) { printf(你已退出游戏\n); break; } else if (i 1) { r rand() % 100 1; game(r); } else printf(请输入1或0\n); }while(i); printf(游戏已结束\n); return 0; }三、代码详解1、rand()函数首先让电脑生成1-100的随机数需要用到rand()函数函数原型如下int rand (void);这个函数返回的是一个伪随机数随机数范围是0-RAND_MAX之间RAND_MAX不同的编译器大小不同大部分都是32767。为什么是伪随机数因为一次运行会生成不同的随机数但是第二次运行的结果会和第一次一样下面的代码两次运行结果如图。#include stdio.h #include stdlib.h int main() { printf(%d\n, rand()); printf(%d\n, rand()); printf(%d\n, rand()); printf(%d\n, rand()); printf(%d\n, rand()); return 0; }两次随机数结果一样这是因为rand()函数是基于一个叫种子的基准值进行算法运算得到的数想让数真正随机起来需要对这个种子值进行调整。rand()函数设置随机数的范围rand() % n就是0-n-1的数所以生成1-100就是rand() % 100;//余数的范围是0~99 rand() % 100 1;//%100的余数是0~99,0~99的数字1,范围是1~1002、srand()srand()用来初始化随机数的生成器种子原型如下void srand (unsigned int seed);函数的参数是一个无符号整数类型通过这个种子值可以生成不同的随机数但是种子还是固定的也不是真正的随机数这里就需要用到另外一个函数。3、time()time_t time (time_t* timer);time函数会返回当前日历时间其实返回的是1970年1月1日0时0分0秒到现在程序运行时间之间的差值单位是秒这个时间差也称为时间戳。返回的类型是time_t类型的time_t类型本质上其实就是32位或者64位的整型类型。time()函数中的参数是一个指针变量暂时不需要管他就是把返回值放入到这个指针变量所指的地址当中去如果参数是NULL就只返回这个时间戳。time()函数需要头文件time.h。