目录
游戏要求
1.系统自动生成一个1~100的随机数
2.玩家共有5次机会,猜测生成的随机数的值
3.玩家每猜一个值,系统将自动反馈其与所生成随机数的大小关系
4.当猜到正确的值或5次机会用光,游戏结束
一.随机数生成
1.rand函数
rand函数原型:int rand(void);
功能:生成一个伪随机数作为返回值
参数:void(无参数)
返回值:int类型,范围为0~RAND_MAX,其中RAND_MAX的值随编译器而定,大部分编译器上是32767
头文件:stdlib.h
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("%d\n", rand());//41
printf("%d\n", rand());//18467
printf("%d\n", rand());//6334
printf("%d\n", rand());//26500
return 0;
}
由上面结果可以看出,rand生成的值不会发生变化,是一个伪随机数,rand函数是对一个叫“种子”的基准值进行运算生成的随机数。
rand函数生成随机数的默认种子为1,所以rand生成的随机数实际上是可预测的
2.srand函数
srand函数原型:void srand(unsigned int seed);
功能:初始化随机数的生成器,设置rand函数生成随机数时的种子
参数:unsigned int类型的种子
返回值:void(无返回值)
头文件:stdlib.h
srand函数能设置rand函数的种子,那么只要让种子随机,rand就能生成随机数了。但我们的目的是生成一个随机数,却需要先得到一个随机数作为种子,这样不就矛盾了吗?
3.time函数
time函数原型:time_t time(time_t* timer);
功能:计算当前日历时间与1970年1月1日0时0分0秒的差值,单位为秒,并将其作为返回值,即时间戳
参数:指向time_t类型的指针
返回值:time_t类型,本质上是32位或64位的整型。如果参数为非NULL,函数将时间戳放在timer指向的内存中带回去;如果函数为NULL(空指针),函数则只返回时间戳
头文件:time.h
因为时间时刻在发生变化,所以只需将time函数的返回值作为种子即可
附:这里不直接将time函数的返回值作为随机数,是因为可以通过看电脑时间,容易算出该值的大小。
include<stdlib.h>
#include<time.h>
int main()
{
printf("%d\n", time(NULL));
return 0;
}
4.随机数的范围
生成a~b的方法如下:
rand()%(b-a+1) + a;
二、猜数字游戏实现
game.c文件
#include"game.h"
void menu(void)
{
printf("----------------------\n");
printf("**********************\n");
printf("******1.开始游戏******\n");
printf("******0.退出游戏******\n");
printf("**********************\n");
printf("----------------------\n");
}
void game(void)
{
int guess = 0;
system("cls");
printf("1--100猜一个数\n");
int count = 5;
int num = rand()%100 + 1;
while (count)
{
printf("----------------------\n");
printf("请输入:>");
scanf("%d", &guess);
if (guess > num)
{
printf("猜大了\n");
}
else if (guess < num)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了!\n");
break;
}
count--;
}
if (!count)
{
printf("----------------------\n");
printf("哈哈,你输啦\n");
printf("正确答案是%d\n", num);
}
menu();
printf("再来一把吗:>");
}
game.h文件
#pragma once
#include<stdlib.h>
#include<time.h>
#include<stdio.h>
#include<windows.h>
void menu(void);
void game(void);
main.c文件
#include<stdio.h>
#include"game.h"
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
menu();
printf("来一把吗:>");
do
{
scanf("%d", &input);
if (input == 1)
{
game();
}
else if (!input)
{
printf("欢迎下次再玩\n");
break;
}
else
{
printf("输错了, 请重新输入\n");
}
} while (input);
return 0;
}
以上就是猜数字游戏的全部内容,感谢观看!