//猜数字游戏
//1.电脑会生成一个随机数
//2.猜数字
#include <stdlib.h>
#include <time.h>
//RAND_MAX//0-32767
void game()
{
//1.生成一个随机数。
int ret = 0;
int guess = 0;//接受猜数字
ret = rand()%100+1;//生成1-100之间随机数
//printf("%d\n", ret);
//2.猜数字
while (1)
{
printf("请猜数字:");
scanf("%d", &guess);
if (guess > ret)
{
printf("猜大了\n");
}
else if (guess < ret)
{
printf("猜小了\n");
}
else
{
printf("恭喜你猜对了\n");
break;
}
}
}
void menu()
{
printf("*************************\n");
printf("***** 1.Play 0.Exit ***\n");
printf("*************************\n");
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//srand((unsigned int)time(0));//time的返回值是一个time_t类型,本质上是一个unsigned long long(表示八个字节的无符号长整形)
//srand的函数参数是一个unsigned int(四个字节)
//强制类型的转化
//拿时间戳来设置随机数的起始点
//time_t time(time_t*timer)
//时间戳:
//当前计算机的时间减去计算机的起始时间(1970.1.1.0:0:0)
do//do...while循环至少进行一次。
{
menu();//菜单函数
printf("请选择>:");
scanf("%d",&input);
switch(input)
{
case 1:
game();//玩游戏函数
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误\n");
break;
}
} while (input);
return 0;
}
在我们编写的过程中发现我们需要了解到time函数以及它的使用方法,其中time的返回值是一个time_t类型,本质上是一个unsigned long long(表示八个字节的无符号长整形)srand的函数参数是一个unsigned int(四个字节),虽然两者在转换的时候会出现四个字节丢失的情况,但是也不影响我们的目标,我们想要的并不是一个准确的时间只要它的种子不同即可。所以这个我们用到了强制转换,也就是在time前面加上一个(unsigned int),意思就是告诉计算机虽然结果有风险,但是这个风险我们自己负责,这个风险在我们的承受范围之内。