前言
今天写一个猜数字的小游戏
要求:
1电脑自动生成一个1~100的数字
2.玩家猜数字直到猜对
一、随机数生成
1、rand函数
原型:
int rand (void)
rand函数会返回一个伪随机数,范围是由编译器决定,大部分编译器是32767.
rand需要包含头文件<stdlib.h>,
程序每次运行rand生成的数字是一样的。
rand生成的随机数并不是真正的随机数,是基于种子生成的随机数,种子默认为1
2、srand函数
原型:
void srand (unsigned int seed)
srand函数是用来初始化随机数的生成器,也就是用来随机种子的,让每个随机序列都不一样。
3、time函数
time函数需要头文件<time.h>
time会返回当前的日历时间,其实返回的是1970年1月1日0时0分0秒到现在程序运行时间的差值,单位是秒。
当time(NULL)时会返回差值。
srand((unsigned int)time(NULL));
用time的返回值作为种子。因为srand的参数是(unsigned int)所以要强制类型转换
一个程序用一次srand函数就行了,用的快种子还没随机。
4、设置随机数范围
生成0~99的范围:
rand()%100;
生成1~100的范围:
rand()%100+1;
如果生成100~200的范围:
100+rand()%(200-100+1);
如果生成a~b的范围:
a+rand()%(b-a+1);
二、代码
我先把每个模块写出来对其进行讲解,然后再把全部代码写出来。
下面代码是先把进入游戏的模版写好,游戏的具体实现在game函数中实现。
void meet()
{
printf("*************************");
printf("*****1. 进入游戏********");
printf("*****0. 退出游戏********");
printf("*************************");
printf("*************************");
}
int main()
{
int a = 0;
do
{
meet();
scanf("%d", &a);
switch (a)
{
case 1:
game();
break;
case 0:
printf("游戏结束\n");
break;
default:
printf("重新输入\n");
}
} while (a);
return 0;
}
下面的模块是具体的代码实现,先给rand随机数设定一个取值范围,然后再输入一个自己想输入的数,接着进行判断直到才对。
void game()
{
int r = rand() % 100 + 1;
int a = 0;
while (1)
{
printf("请开始猜数字");
scanf("%d", &a);
if (a < r)
printf("猜小了");
else if(a>r)
{
printf("猜大了");
}
else
{
printf("猜对了");
printf("%d\n", a);
break;
}
}
}
下面是一共需要的代码。
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
void meet()
{
printf("*************************\n");
printf("*****1. 进入游戏********\n");
printf("*****0. 退出游戏********\n");
printf("*************************\n");
printf("*************************\n");
}
void game()
{
int r = rand() % 100 + 1;
int a = 0;
while (1)
{
printf("请开始猜数字");
scanf("%d", &a);
if (a < r)
printf("猜小了");
else if(a>r)
{
printf("猜大了");
}
else
{
printf("猜对了");
printf("%d\n", a);
break;
}
}
}
int main()
{
int a = 0;
srand((unsigned int)time(NULL));
do
{
meet();
scanf("%d", &a);
switch (a)
{
case 1:
game();
break;
case 0:
printf("游戏结束\n");
break;
default:
printf("重新输入\n");
}
} while (a);
return 0;
}
总结
这个猜数字游戏其中比较难的是随机数的实现。
应该先用srand实现随机种子,然后再根据想要的取值范围设置返回值。
如果有对代码有疑问的,评论区留言立马解答。
1241

被折叠的 条评论
为什么被折叠?



