前面我们讲了有关分支与循环的内容,可以由此看→
http://t.csdnimg.cn/yxTwh 今天我们就由此些知识来实现个小游戏
首先我们先要了解该游戏所需要的几个函数:
rand()函数: 可以生成伪随机数(多次程序运行结果一致)→rand函数是以一个叫“种子”的基准值生成函数,而rand函数生成随机数的默认种子为1(导致多次程序运行结果一致的原因→导致生成伪随机数)→所以要生成不同的随机数,应该让种子是变化的 生成随机数范围:0~RAND_MAX(32767→跟编译器有关)之间
srand()函数: 用来初始化随机数的生成器的——变化rand的种子 (不是给种子一个随机数→那就是以一个随机数来生成一个随机数了) →所以当srand()里的参数值为1时,rand种子仍然是1;变成2,rand的种子值就改变——所以当使参数值一直变时(如time函数) ,rand的种子就会一直变 srand函数的原型如下:
void srand(unsigned int seed);
通过参数seed来设置rand的种子
使用rand()和srand()应包含头文件<stdlib.h> srand函数生成的种子在整个程序只能执行一次(不然生成的随机数会很相近甚至相同)
time()函数: 一般用程序生成的时间作为rand的种子(因为时间时刻在发生变化),time函数就可以获得这个时间 →→ time函数会返回一个时间戳(时间戳:1970.1.1.0.0到现在程序运行时间(即现在日期)之间的差值(单位是秒)→所以是时刻变化的) time函数原型: time_t time(time_t* timer); 返回类型为 time_t 类型,其实本质上为整形类型 如果只返回时间戳,应写为: time(NULL); (NULL是空指针,应注意为大写) 使用time()应包含头文件<time.h>
综上所述,生成可变的rand的种子应该写上:
srand(unsigned int time(NULL));
注意:这个srand函数在整个程序只能执行一次 其中的NULL为空指针
附加:如果要要生成a~b之间的随机数→公式a+rand()%(b-a+1)
依照这三个函数我们就可以进行游戏的编写,代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//void rand() rand()为 int_cdecl rand(void)
void game()
{
int a = 0;
int b = 0;
a = rand()%100 + 1;
// do
while (1)
{
printf("请输入你的猜测值:");
scanf_s("%d", &b);
if (b > a)
printf("猜大了\n");
else if (b < a)
printf("猜小了\n");
else
{
printf("恭喜你,猜对了");
break;
}
}
// } while (b); //当判断条件为b时,像输入0这种情况就会出错
}
void begin()
{
printf("******************\n");
printf("****1:开始游戏****\n");
printf("****0:退出游戏****\n");
printf("******************\n");
}
int main()
{
int i = 0;
srand((unsigned int)time(NULL));
do {
begin();
scanf_s("%d", &i);
if (i == 1)
game();
else if (i == 0)
break;
else
printf("输入错误");
} while (1);
return 0;
}
欧克,今天的文章到这就结束了,希望能帮到大家 (˵¯͒〰¯͒˵)(˃ ⌑ ˂ഃ )(˃ ⌑ ˂ഃ )