猜数字游戏:
1.给玩家提供一个菜单选项(开始游戏/退出游戏)
2.开始游戏,由系统生成一个随机数[1-100]
3.玩家输入一个数字,系统进行比较,提示玩家高了/低了
4.玩家根据提示循环进行猜测,直到猜中,这局游戏结束
注意:
系统生成随机数,这里我们需要用到函数rand
rand函数:
(1)生成随机数
(2)返回0和之间的范围内的伪随机整数。
(3)该数字由算法生成,该算法在每次调用时返回一系列明显不相关的数字。该算法使用种子生成序列,应使用函数将其初始化为某个独特的值函数srand。
v1 = rand() % 100; // v1 in the range 0 to 99
v2 = rand() % 100 + 1; // v2 in the range 1 to 100
v3 = rand() % 30 + 1985; // v3 in the range 1985-2014
由于函数rand会记录上一次的结果,因此我们需要对它进行初始化,就要用到函数srand
srand函数:
(1)初始化随机数生成器使用作为种子传递的参数初始化伪随机数生成器。
(2)对于调用中使用的每个不同的种子值函数srand,可以预期伪随机数发生器在随后的调用中产生不同的连续结果 兰特。
(3)使用相同种子的两个不同初始化将在后续调用中生成相同的连续结果兰特。
(4)如果将seed设置为1,则将生成器重新初始化为其初始值,并生成与任何调用之前相同的值兰特 要么 函数srand。
(5)为了生成随机数字,函数srand 通常初始化为一些独特的运行时值,如函数返回的值 时间(time)。这足以满足大多数琐碎的随机需求。
综上:随机数且初始化的生成应为 srand((unsigned int)time(0))
这里需要注意的是使用time函数时必须引用头文件#include<time.h>
并且time为8个字节,我们要用unsigned int 将其强制转换为4个字节
源代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int Menu() {
printf("========================\n");
printf("1.开始游戏 0.退出游戏\n");
printf("========================\n");
printf("请输入您的选项:");
int choice = 0;
scanf_s("%d", &choice);
return choice;
}
void Game() {
int to_guess = rand() % 100 + 1; //rand函数产生随机数1-100
while (1) {
printf("请输入一个数字[1-100]:");
int input = 0;
scanf_s("%d", &input);
if (input < to_guess) {
printf("低了!\n");
}
else if (input > to_guess) {
printf("高了!\n");
}
else {
printf("恭喜您,猜对了!\n");
break;
}
}
}
int main() {
srand((unsigned int)time(0)); //将time由8个字节强制转换为4个字节,并初始化随机数
while (1) {
int choice = Menu(); //调用Menu函数,实现菜单的完成
if (choice == 1) {
Game(); //调用Game函数实现游戏的过程
}
else {
printf("Good Bye!\n");
break;
}
}
system("pause");
return 0;
}