【C语言】猜数字游戏

【C语言】学生成绩管理系统设计

  • 一.游戏介绍
  • 二.代码实现
    • 1.构建游戏菜单
    • 2.构建游戏函数
    • 3.构建主函数
  • 二.核心:二分法
  • 三.总代码

一.游戏介绍

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

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

如何实现随机生成?

可以使用rand函数(头文件是 #include)

int random_num = rand() % 100 + 1;

但必须要调用srand函数

srand((unsigned)time(NULL));

二.代码实现

1.构建游戏菜单

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

【C语言】猜数字游戏_第1张图片

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("猜大了\n");
		}
		else if (input < random_num)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("恭喜你,猜对了\n");
			break;
		}
	}
}

【C语言】猜数字游戏_第2张图片

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("输入错误,请重新输入!\n");
			break;
		}
	} while (input);
	return 0;
}

二.核心:二分法

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

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

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

三.总代码

#define  _CRT_SECURE_NO_WARNINGS 1
#include
#include
#include //时间戳:随机值

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

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("猜大了\n");
		}
		else if (input < random_num)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("恭喜你,猜对了\n");
			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("输入错误,请重新输入!\n");
			break;
		}
	} while (input);
	return 0;
}

【C语言】猜数字游戏_第3张图片

最后:


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

你可能感兴趣的:(c语言,游戏,c++)