1. 随机数生成
1).首先介绍一个库函数rand,这个函数可以生成随机数.
这个重要,还是要自己写一下。
原型: int rand(void);
*rand函数返回一个伪随机数,这个随机数的范围是0-RAND_MAX之间,RAND_MAX的大小是依赖编译器实现的,但是大部分是32767.头文件是:stdlib.h
*运行了三次,发现结果没变化,没有产生自己想要的随机数,肯定不合适.
*rand函数生成的是伪随机数,要通过对一个叫“种子”的基准值进行运算生成随机数.
那么,接下里介绍一个设置种子的函数!srand()
*原型:void srand(unsigned int seed)
此函数,无返回值,参数是unsigned int seed ,就可以把seed设置成随机变化的就可以了。
*那么,怎样设置种子呢?下面介绍时间戳的概念!
*在程序中我们一般是使用程序运行的时间作为种子的,因为时间时刻在变化。
原型:time_t time(time_t timer);
*time 函数会返回当前的⽇历时间,其实返回的是1970年1⽉1⽇0时0分0秒到现在程序运⾏时间之间的差值,单位是秒。返回的类型是time_t类型的,time_t 类型本质上其实就是32位或者64位的整型类型。
*time函数的参数 timer 如果是⾮NULL的指针的话,函数也会将这个返回的差值放在timer指向的内存中带回去.
*如果 timer是NULL,就只返回这个时间的差值。time函数返回的这个时间差也被叫做:时间戳。
time函数的时候需要包含头⽂件:time.h
*关于返回值time_t time的说明!
*可以这样尝试着写随机数!
*设置随机数范围!
*生成0~99的随机数
rand()%100,这个简单理解除以100的余数范围就是0~99.
*生成100~200的随机数!
100+rand()%101,rand%101的范围是0~100,+100就是范围就是100 ~ 200.
*生成a~b的随机数!
a+rand()%(b-a+1);
2.游戏实现
*问题描述:写⼀个猜数字游戏
游戏要求:
- 电脑⾃动⽣成1~100的随机数
- 玩家猜数字,猜数字的过程中,根据猜测数据的⼤⼩给出⼤了或⼩了的反馈,直到猜对,游戏结束!
*这个简单,直接按照逻辑写!
void Menu()
{
printf("*******************\n");
printf("*** 1.play ****\n");
printf("*** 0.exit ****\n");
printf("*******************\n");
}
void Game()
{
//随机数
int rand_nums = rand() % 100 + 1;
int guess = 0;
while (1) {
printf("请猜数字:>");
scanf("%d", &guess);
if (guess < rand_nums) {
printf("猜小了\n");
}
else if (guess > rand_nums) {
printf("猜大了\n");
}
else {
printf("恭喜你,猜中了!你是一个大聪明!\n");
//猜中之后就结束
break;
}
}
}
int main()
{
//设置种子
srand((unsigned int)(time(NULL)));
int input = 0;
do {
Menu();
printf("请选择:>");
scanf("%d", &input);
switch(input){
case 1:
Game();
break;
case 0:
break;
default:
printf("输入错误,请重新输入!");
}
} while (input);
return 0;
}
完结!(已经很晚了…)