【C语言】猜数字游戏

一.游戏介绍

游戏玩法:每次随机生成一个1~100之间的数字,玩家通过输入数字来猜这个数,如果没猜中则提示玩家猜大了或者猜小了,

直到玩家猜中数字结束游戏。

如何实现随机生成?

可以使用rand函数(头文件是 #include<time.h>)

int random_num = rand() % 100 + 1;

但必须要调用srand函数

srand((unsigned)time(NULL));

二.代码实现

1.构建游戏菜单

void menu()
{
          
   
	printf("**********************************
");
	printf("********       1.play      *******
");
	printf("********       0.exit      *******
");
	printf("**********************************
");
}

2.构建游戏函数

void game()
{
          
   
	int random_num = rand() % 100 + 1;//返回1~100的数字
	                                  //rand的范围:0~32767
	int input = 0;
	scanf("%d",& input);
	while (1)
	{
          
   
		printf("请输入猜的数字>:");
		scanf("%d", &input);
		if (input > random_num)
		{
          
   
			printf("猜大了
");
		}
		else if (input < random_num)
		{
          
   
			printf("猜小了
");
		}
		else
		{
          
   
			printf("恭喜你,猜对了
");
			break;
		}
	}
}

3.构建主函数

利用do…while循环,让玩家多次猜数字, switch语句,让玩家选择退出游戏还是继续游戏。

随机值(random_num) 生成1~100: int random_num = rand() % 100 + 1:

返回1~100的数字, rand的范围:0~32767。

srand((unsigned)time(NULL))

设置随机数生成器, rand之前要调用srand。
int main()
{
          
   
	int input = 0;
	srand((unsigned)time(NULL)); //设置随机数生成器
	                             //rand之前要调用srand
	do
	{
          
   
		menu();
		printf("请选择>:");
		scanf("%d", &input);
		switch (input)
		{
          
   
		case 1:
			game();
			break;
		case 0:
			game();
			break;
		default:
			printf("输入错误,请重新输入!
");
			break;
		}
	} while (input);
	return 0;
}

二.核心:二分法

如果使用二分法进行猜 100以内的任何一个随机数,最多 七次 就可以正确猜对该随机数。

二分法又可以被称为二分查找,它描述了在有序集合中搜索特定值的过程。广义的二分查找是将问题的规模尽可能的缩小到原有的一半。

程序通过二分法不断缩小猜测范围, 直到猜中数字 n: 例如n = 97, 程序第一次猜测50, 判断数值太小。 第二次猜测75,判断数值太小。 第三次猜测87,判断数值太小。 第四次次猜测97,恭喜你猜对了!

三.总代码

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h> //时间戳:随机值

void menu()
{
          
   
	printf("**********************************
");
	printf("********       1.play      *******
");
	printf("********       0.exit      *******
");
	printf("**********************************
");
}

void game()
{
          
   
	int random_num = rand() % 100 + 1;//返回1~100的数字
	                                  //rand的范围:0~32767
	int input = 0;
	scanf("%d",& input);
	while (1)
	{
          
   
		printf("请输入猜的数字>:");
		scanf("%d", &input);
		if (input > random_num)
		{
          
   
			printf("猜大了
");
		}
		else if (input < random_num)
		{
          
   
			printf("猜小了
");
		}
		else
		{
          
   
			printf("恭喜你,猜对了
");
			break;
		}
	}
}
int main()
{
          
   
	int input = 0;
	srand((unsigned)time(NULL)); //设置随机数生成器
	                             //rand之前要调用srand
	do
	{
          
   
		menu();
		printf("请选择>:");
		scanf("%d", &input);
		switch (input)
		{
          
   
		case 1:
			game();
			break;
		case 0:
			game();
			break;
		default:
			printf("输入错误,请重新输入!
");
			break;
		}
	} while (input);
	return 0;
}

最后:

👊👊👊 感谢阅读! 欢迎交流学习!!

经验分享 程序员 微信小程序 职场和发展