一、rand()函数
rand()
函数会返回一个 伪随机数 ,因为它默认 种子为1 。
注意: rand()
函数需要一个头文件 stdlib.h
。
例如:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
return 0;
}
上述代码每次运行地结果都是相同的。
二、srand()函数
srand()
函数是用来 初始化随机数的生成器 的,srand()
的原型如下:
void srand(unsigned int seed)
srand()函数可以改变种子数
三、time()函数
time()
函数需要一个头文件 time.h
。
通过时间来调整种子数,见下代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
srand((unsigned int)time(NULL));
printf("%d\n", rand());
注: srand()
函数只需要调用一次即可。
四、设置随机数的范围
有个公式,如果要生成a~b之间的随机数,如使用如下代码:
a + rand()%(b-a+1);
五、猜数字游戏
1.写出主函数
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do {
menu(); // 调用菜单目录
scanf("%d", &input);
switch (input) {
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误,请重新输入");
}
} while (input); // 输入0直接停止循环退出
return 0;
}
2.设计菜单函数
void menu()
{
printf("***********************\n");
printf("********1.play*********\n");
printf("********0.exit*********\n");
printf("***********************\n");
}
之所以设计exit
为0,是因为输入部分,如果输入为0,就直接退出循环了,这里比较巧妙。
3.设计游戏函数
void game()
{
int r = 1 + rand() % 100;
int guess = 0;
while (1)
{
printf("请猜数字:>");
scanf("%d", &guess);
if (guess > r)
{
printf("猜大了\n");
}
if (guess < r)
{
printf("猜小了\n");
}
if (guess == r)
{
printf("恭喜你,猜对了");
break;
}
}
}
这里先生成随机数,在1~100之间,然后进行猜数
注意: while(1)
能成循环一直进行下去,直到猜对,执行 break
语句才会跳出循环,这个也比较巧妙。
如果想设置猜数的次数,可以在这部分动手脚。
例如:我想设置5次猜数机会:
void game()
{
int r = 1 + rand() % 100;
int guess = 0;
int count = 5;
while (count)
{
printf("你还有%d次机会\n", count);
printf("请猜数字:>");
scanf("%d", &guess);
if (guess > r)
{
printf("猜大了\n");
}
if (guess < r)
{
printf("猜小了\n");
}
if (guess == r)
{
printf("恭喜你,猜对了");
break;
}
count--;
}
if (count == 0)
printf("猜数失败\n");
}