目录
rand函数
1. 作用:rand函数可以⽣成随机数
2.函数原型:int rand (void);
3. 原理:rand函数是对⼀个叫“种⼦” (初始值) 的基准值进⾏运算⽣成的随机数。
4. 随机数的范围:
- 这个随机数的范围是在0~RAND_MAX之间,
- RAND_MAX的值依赖编译器实现的,
- 但是⼤部分编译器上是32767。
5. 使用要求:rand函数的使用需要包含⼀个头⽂件是:stdlib.h(#include<stdlib.h>)
6. 设置随机数的范围:
- 例如 a.生成0~99的随机数
- rand()%100;
- b.生成1~100的随机数
- rand()%100+1;
- c.生成a~b之间的随机数
- a+rand()%(b-a +1);
7.注意事项:
- 其⽣成的随机数并不是真正的随机数而是伪随机数
- (即每次运行后的结果都相同),
- 因为rand函数⽣成随机数的默认种⼦(初始值)是1
例如
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("%d\n", rand());
printf("%d\n", rand());
return 0;
}
srand函数
1. 作用: ⽤来初始化随机数的⽣成器(设置随机数的种子)
2. 函数原型:
void srand (unsigned int seed);
3. 使用要求:
- 传入srand的种子参数是无符号整型,若不是就强制转换。
- srand函数的使用需要包含⼀个头⽂件是:stdlib.h(#include<stdlib.h>)
time函数
1. 作用: time函数可以获取当前日历时间
2. 函数原型:
- time_t time (time_t* timer);
- 其中time_t本质是32位或者64位的整型(即long或long long),
- timer是参数(此参数可以是空指针,在这种情况下不使用参数)
3. 返回值:
- a. time函数通常返回当前unix时间戳 (即从1970年1月1日00:00时 (UTC/GMT的午夜)开始 到 目前程序运行的时间之间 所经历的秒数),
- 函数会将这个返回的差值放在timer指向的内存中带回去。
- b. 如果函数无法检索日历时间,则返回值为 -1
4. 使用要求:time函数的使用需要包含头文件 time.h(#include<time.h>)
代码示范 :
#include<stdio.h>
#include<time.h>
int main()
{
time_t i,j;
i = time(&j);
printf("%lld/n", i);
return 0;
}
应用
生成随机数
代码示范
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
//使用time函数的返回值(时间戳是变化的)设置为种子,从而改变每次rand函数生成随机数的值
//srand要求参数是无符号整型,而time函数返回的是长整型,所以需要将其强制性转换
srand((unsigned int)time(NULL));
printf("%d/n",rand()%100);//打印0~99之间的随机数
return 0;
}
猜数字游戏
思路讲解:
一.制作菜单
- 1.开始游戏
- 2.退出游戏
- 3.选择错误,重新选择(先输入一个数,让玩家选择是否进行游戏)
二.制作游戏时的内容
- 1. 系统随机生成一个1~100的数
- 2. 程序根据玩家输入的数字判断之前生成的数是否相等并给出提示。
- ( 猜数次数可以自行设置)
知识点:生成随机数 ,分支语句和循环语句,函数的调用
代码示范:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void game()
{
int i,j;
i = rand() % 100 + 1;
int cnt = 10; //限制猜数的次数,如可猜数10次
while (cnt)
{
printf("你还有%d次机会\n",cnt);
printf("请输入一个数字\n");
scanf("%d", &j);
if (j > i)
printf("输大了\n");
else if (j < i)
printf("输小了\n");
else
{
printf("恭喜你,猜对了\n");
break;
}
cnt--;
if (cnt == 0)
printf("猜数失败,正确答案是%d\n",i);
}
}
int main()
{
int a=0,b;
srand((unsigned int)time(NULL));
do
{
printf("************************\n");
printf("******0.don't play******\n"); //选0退出游戏
printf("*********1.play*********\n"); //选1开始游戏
printf("************************\n");//选到其他数,就重新选择
scanf("%d", &a);
switch (a)
{
case 0:
printf("退出游戏\n");
break;
case 1:
printf("开始游戏\n");
game();
break;
default:
printf("输入错误,请重新输入\n");
}
}while (a);
return 0;
}