主要思想:建立一个函数打印游戏菜单,建立一个函数运行游戏,在主函数中用循环重复运行。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
void menu()//------打印菜单
{
printf("************************\n");
printf("***** 1.开始游戏 *****\n");
printf("***** 2.退出游戏 *****\n");
printf("************************\n");
}
void game()//------游戏程序
{
int guess = 0;
int ret = rand() % 100 + 1;//生成1-100随机数
printf("请猜一个数:\n");
do {
scanf("%d", &guess);
if (ret > guess) {
printf("猜小了\n");
}
else if (ret < guess) {
printf("猜大了\n");
}
else {
printf("你猜对了\n");
}
} while (guess!=ret);
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//-----rand所需
do {
menu();
scanf("%d", &input);
switch (input) {
case 1:
game();
break;
case 2:
break;
}
} while (input == 1);
return 0;
}
知识点
1.当我们想要一个随机值的时候单单ret=rand()是不够的,因为我们多次获得一组随机数会发现是前后两组是一样的,这样我们就需要srand(),它的功能是括号里每有一个数,就可以生成对应的一个随机值,但是如果括号里的值不变呢,这就导致只能生成这一个随机值,所以我们要让括号里的值变化。但是我们本来就要一个随机值,你却还要让在括号里输入一个随机值,这样我们就需要时间戳,即用现在时间和计算机开始时间的插值转化的一个数字,就是time函数在给time输入一个空值NULL,再将time强制转换类型为unsigned int。而且要注意srand不要多次调用,否则产生的随机值变化范围极小。
2.我们如何获得想要的固定范围的随机数呢,拿1-100为例子,很简单只要将随机数除100取余再加+1,因为一个数除100取余就会产生0-99范围内的数字 再加1即1-100。