猜数字游戏---rand、srand函数(C语言)

关于猜数字游戏,本篇博客着重介绍猜数字游戏的流程以及rand、srand函数的讲解。

一. 猜数字游戏流程框架

 1.1   创建目录函数
 
 1.2   创建游戏函数与玩家进行交互
 
 1.3   main函数中引用上面两个函数,并由目录选择决定游戏走向

二. rand和srand函数

由于猜数字游戏需要引入随机数字,所以我们先后引入了rand函数与srand函数,分别设置在了游戏函数、main函数中,接下来进行具体讲解。

  • 2.1 rand函数:
    用法举例:
    v1 = rand() % 100; //生成0-99中随机数
    v2 = rand() % 100 + 1;//生成0-100中随机数
    v3 = rand() % 30 + 1985; //生成1985-2014中随机数
    头文件:
    注:详情见www.cplusplus.com—查找rand,了解更多rand函数功能与用法。

  • 2.2 srand函数:
    srand函数引入的原因:

    • 由rand在猜数字函数中生成的那组数为伪随机(由复杂的算法生成的数字,并非真正的随机),没有srand时,生成的是一组固定顺序的随机数列,相当于每次执行程序猜的数字是一样的。

    • 所以需要引入srand函数,srand的参数seed是rand()的种子,用来初始化rand()的起始值。将srand函数放在main中,这时候直接令seed每一次调用时都不一样,那么随着初始值的改变rand生成不同的随机数列。

    • 怎么令seed每次调用都不同呢? 这时候我们用到了时间戳。
      时间戳(time):以1970年1月1日0分0秒为基准时刻,计算当前时刻与基准数之间之差,单位为秒。在正常情况下时间总是在变化的,使得seed每次调用都不同,从而rand初始值也每次都不同,从而生成随机数列!

    函数用法:
    void srand (unsigned int seed);
    头文件:
    注:详情见www.cplusplus.com—查找srand,了解更多srand函数功能与用法。

三.代码实现

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include 
#include 
//1.创建目录函数
int menu(){
     
	printf("+++++++++++++++++++++++++++\n");
	printf("+++++++++++++++++++++++++++\n");
	printf("+++ 欢迎来到猜数字游戏!+++\n");
	printf("+++++++ 1.开始游戏 ++++++++\n");
	printf("+++++++ 0.退出游戏 ++++++++\n");
	printf("+++++++++++++++++++++++++++\n");
	printf("+++++++++++++++++++++++++++\n");
	printf("请输入您的选择:");
	int choice = 0;
	scanf("%d", &choice);
	return choice;
}

//2.创建游戏函数(注意:此处不需要返回值!所以默认返回值为空,用void)
void game(){
     
	//2.1 生成一组[1,100]随机整数数字
	int toGuess = rand() % 100 + 1;// rand函数,见上面的解释
	//2.2 进入循环,开始猜数字
	while (1){
     
		int inputNum = 0;
		printf("请输入一个[1,100]之间您猜出来的的整数:");
		scanf("%d", &inputNum);
		if ((inputNum <= 100) & (inputNum >= 1)){
       //确保用户猜的数字在1到100之间
			if (toGuess == inputNum){
     
				printf("恭喜您!猜对了!!!\n");
				break;
			}
			else if (toGuess < inputNum){
     
				printf("不好意思,您猜大了\n");
			}
			else{
     
				printf("不好意思,您猜小了\n");
			}
		}
		else{
     
			printf("您的输入有误!请输入1到100之间的数字!\n");
		}
	}
}

int main(){
     
	srand((unsigned int)time(0));// srand函数,见上面解释
	//获取时间戳:time(0)是time(NULL)的另一种写法,表示只通过返回值获取时间值
	while (1){
     
		int choice = menu();//通过目录决定游戏走向,注意输入错误形式需提醒!
		if (choice == 0){
     
			printf("您已退出猜数字游戏\n");
			break;
		}
		else if (choice == 1){
     
			game();
		}
		else{
     
			printf("您输入的形式有误!请输入0或1!!\n");
		}
	}
	return 0;
}

以上为本次博客全部内容,欢迎大家在评论区指正探讨~

你可能感兴趣的:(C语言)