代码实现在文章的结尾处
猜数字游戏
一、rand
函数
(一)语法结构
rand();
(二)介绍
这个函数是用来生成伪随机数的,伪随机数并不是完全随机的,伪随机数是靠“种子”生成的.rand函数的使用要包含<stdlid>
这个头文件
实例:
# include <stdio.h>
# include <stdlib.h>
int main() {
int a = rand();
printf("%d\n", a);
printf("%d", a);
printf("%d", a);
printf("%d", a);
return 0;
}
//我们发现重复调用rand函数,生成的值不变
二、srand
函数
rand
函数产生的伪随机数是一样的,那我们怎么让他产生真的随机数呢,
那我们就要用到srand
函数,这个函数是用来修改rand
里种子的,种子不同,产生的随机数就不同
(一)语法结构
srand (unsigned int 给定的种子);
(二)利用time
函数修改种子
1. time
函数介绍
time
函数的参数如果给定NULL的话,他返回的值就是1970年1⽉1⽇0时0分0秒到现在程序运⾏时间之间的差值
三、实现随机数的产生
(一)代码实现
#include <stdio.h>
#include <stdlib.h>
int main() {
srand((unsigned int)time(NULL));
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
return 0;
}
//这样我们就可以打印出真正的随机数
(二)限制随机数的范围
如果我们不限定rand
函数的生成范围,那么生成范围就是0~RAND_MAX,RAND_MAX的大小取决于IDE,一般是32767
1. 思路
a ~ b的范围
a + rand()%(b-a+1)
四、猜数字游戏的实现
#include <stdio.h> //添加几个头文件
#include <stdlib.h>
#include <time.h>
void menu() //封装一个提示菜单界面的函数
{
printf(" 猜数字游戏 \n");
printf("***** 1.paly *****\n");
printf("***** 0.exit *****\n");
printf("\n");
printf("请输入您的选择:");
}
void game() //封装游戏的主体
{
int ans = rand() % 100 + 1;
while(1) //死循环,只有猜对了才退出循环,猜大了或猜小了都重新猜
{
int guess = 0;
printf("%d", ans);
//printf("答案在1-100之间,请输入你猜的值:"); //测试
scanf("%d", &guess);
if (guess > ans)
{
printf("猜大了\n");
}
else if (guess < ans)
{
printf("猜小了\n");
}
else
{
printf("恭喜你!猜对了!答案就是%d\n", ans);
printf("\n");
printf("\n");
break;
}
}
}
int main()
{
int sel = 0;
srand((unsigned int)time(NULL)); //利用时间戳修改rand函数的种子
do
{
menu();
scanf("%d", &sel);
switch (sel) //利用switch分支结构判断用户在菜单界面选择
{
case 1:
{
game();
break;
}
case 0:
{
printf("游戏退出,欢迎下次游玩!");
break;
}
default:
printf("选择错误,请重新选择:\n");
break;
}
} while (sel); //选择为其他数时,条件判断为真,再进行循环
return 0;
}
标签:rand,函数,int,数字,随机数,printf,include,游戏
From: https://blog.csdn.net/2401_83277519/article/details/140618145