很多人一看到游戏两个字,就感觉很难,其实不然,这个程序很简单。
先来介绍一下游戏要求
在键盘上输入1进入游戏,输入0退出游戏,进入游戏以后调用game函数进行游戏。在输入1后进入函数,先让系统生成一个随机数,你在键盘输入一个0-100之间的整数,如果大于随机数,输出“高了”,如果小于随机数,输出“低了”,如果等于这个随机数,输出“猜对了!”。
这里就有一个新的知识点了,随机数,在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数
rand()%100+1 不需要参数,它会随机生成一个位于1~ 100之间的整数。
rand() 函数是使用线性同余法做的,它并不是真的随机数,因为其周期特别长,所以在一定范围内可以看成随机的。
代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include<time.h>
int shoumenu()
{
	//打印一个初始页面,让用户看起来更直观一些
	printf("==============================\n");
	printf("      欢迎来到随机数游戏      \n");
	printf("输入1:进入游戏                \n");
	printf("输入0:退出游戏                \n");
	printf("==============================\n");
	int choice = 0;				//将choice初始化
	printf("请输入你的选择:");
	scanf("%d", &choice);		//输入数字,选择你要进入游戏还是退出游戏
	return choice;  //返回这个数字
}
void Game() 
{
	printf("开始一局猜数字游戏\n");
	int toguess = rand() % 100 + 1;// 随机数生成,表示在0-100之间随意生成一个数
	while (true)
	{
		printf("请输入一个整数[1,100]:\n");
		int intpum = 0;  //这是用户输入的数字,先进行初始化
		scanf("%d", &intpum);
		if (intpum < toguess) 
		{	//输入的数字和随机生成的数字相互比较
			printf("低了");
		}
		else if (intpum > toguess) 
		{
			printf("高了\n");
		}
		else
		{
			printf("猜对了!\n");
			break;
		}
	}
}
int main()
{
	srand(time(0));		//随机数种子
	while (true)		//让函数可以反复执行,直到猜对,break;结束循环
	{
		int choice = shoumenu();
		if (choice == 1)
		{
			Game();
		}
		else if(choice==0)
		{
			printf("Goodbye!\n");
			break;
		}
		else
		{
			printf("输入有误,请重新输入:\n");
		}
	}
	return 0;
}

在多次运行的时候,我们会发现一个问题,比如说第一次生成的随机数为42,你经过很多次输入,最终猜对了,在你第二次运行这个程序时,如果你输入42就可以直接猜对,这就很影响游戏的公平性,在这时我们就要引入两外一个函数:srand();
srand(seed) 为初始化随机数发生器,用于设置rand()产生随机数时的种子。为初始化随机数发生器,用于设置rand()产生随机数时的种子。传入的参数seed为unsigned int类型,通常我们会使用 time(0) 的返回值作为 seed,即srand(time(0)),此处得 time(0) 表示得是一个时间戳(大家想了解的话可以去百度搜一下),因为时间戳是一个变化的数,所以程序最后运行时那个数不可能一直是42,不可能是一个不变的数,游戏也就变得相对公平了。
time(0)要包含一个头文件#include<time.h>
而且srand()函数通常在main函数里面第一行位置