1.实现思想
使用rand函数只能得到伪随机数,我们便使用time函数以及srand函数构造成为一个真随机数,模块化程序设计,将程序界面与执行内容分割开,以及设计了难度系统,利用了一点简单的循环结构。
2.使用的函数
time函数:
函数原型: time_t time(time_t *timer)
参数说明: timer=NULL时得到当前日历时间(从1970-01-01 00:00:00到现在的秒数),timer=时间数值时,用于设置日历时间,time_t是一个unsigned long类型。如果 timer不为空,则返回值也存储在变量 timer中。
函数功能: 得到当前日历时间或者设置日历时间
函数返回: 当前日历时间
rand函数:
rand() 会随机生成一个位于 0 ~ RAND_MAX 之间的整数。
RAND_MAX 是 <stdlib.h> 头文件中的一个宏,它用来指明 rand() 所能返回的随机数的最大值。C语言标准并没有规定 RAND_MAX 的具体数值,只是规定它的值至少为 32767。在实际编程中,我们也不需要知道 RAND_MAX 的具体值,把它当做一个很大的数来对待即可。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rand函数生成的随机数为伪随机数!!!!!!!!!!!!!!!!!!!!!!!!
是使用srand函数给予的种子值得到的数。
2.代码实现
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>//使用time函数的头文件
#include<stdlib.h>//使用rand函数的头文件
int o;
void diff()
{
printf("1.是人随便过模式\n");
printf("2.菜鸟模式\n");
printf("3.简单模式\n");
printf("4.困难模式\n");
printf("5.运气模式\n");
}
//难度的界面
void game()
{
int num = 0;
int ret = rand() % 100 + 1;
int diffcult = 0;
for (int i = o; i >0; i--)
{
printf("请输入要猜的数字:");
scanf("%d", &num);
if (num > ret)
{
printf("猜大了\n");
}
else if (num < ret)
{
printf("猜小了\n");
}
else
{
printf("猜对了\n");
break;
}
printf("还剩%d次机会\n", i-1);
}
}
//游戏主要内容
void menu()
{
printf("***************************\n");
printf("*****1.开始游戏 0.退出*****\n");
printf("***************************\n");
}
//开始菜单
int main()
{
int n = 0;
int d = 0;
srand((unsigned)time(NULL));
do
{
menu();
scanf("%d", &n);
switch (n)
{
case 1:
{
printf("请选择难度\n");
diff();
loop:
scanf("%d", &d);
switch (d)
{
case 1:
o = 10;
break;
case 2:
o = 8;
break;
case 3:
o = 6;
break;
case 4:
o = 5;
break;
case 5:
o = 1;
break;
default:
{
printf("请重新选择难度:\n");
goto loop;//使用goto函数防止难度选择错误
}
}
game();
}
case 0:
{
printf("游戏结束\n");
break;
}
default:
{
printf("请重新输入");
}
}
} while (n);
return 0;
}
//主函数区域