C语言趣味小游戏----猜数字小游戏

作者:雨落在了我的手上日期:2025/10/2

一:猜数字游戏的雏形

部分代码如下,这下面的代码只是一个初步的框架,还不能正式的进行猜数字游戏,因为我还没有将猜数字的代码写进去,这里我先给大家解释一下是下面代码的大致意思

首先呢这个猜数字游戏我们要运用do while循环以及switch语句来初步的进行我们的猜数字游戏,当然我们可以不用do while循环,可以用while循环还有就是 for循环,但是这里我推荐大家用do while循环,因为会更加的好理解以及使用

现在我分别拆开代码来和大家一一介绍

1int main()
2{
3	int input =  0 ;
4	do
5	{
6		printf("*********************\n");
7		printf("******  1.play ******\n");
8		printf("******  2.exit ******\n");
9		printf("*********************\n");
10
11		printf("请选择选项:");
12		scanf("%d", &input);
13
14		switch(input)
15		{
16		case 1:
17			printf("游戏开始,请输入数字\n");
18			break;//这里的break是跳出switch循环的
19		case 2:
20			printf("退出游戏\n");
21			break;
22		default:
23			printf("输入错误,请重新输入\n");
24			break;
25		}
26
27	} while (input);
28	return 0;
29}
30
31

这个代码呢,比较简单们就是单纯的将我们输入的值存放在input里面去,其是大家这个变量是可以随便取的,这里input的中文是输入的意思,所以推荐大家用这个变量,这样更加好理解

1int input =  0 ;

这块部分的代码就是我们的界面,比较好理解,这里我就不仔细给大家讲了

1	printf("*********************\n");
2		printf("******  1.play ******\n");
3		printf("******  2.exit ******\n");
4		printf("*********************\n");
5
6		printf("请选择选项:");
7		scanf("%d", &input);

界面如下

这里呢是switch语句的代码介绍

switch语句就是把我们会出现的所有情况都一一可以列举出来,这里我们的猜数字游戏的界面我们只有三种情况,在上面那个代码就是1.play 2.exit,这个界面就是这两种情况,当然第三种情况就是我们不输入1或者2,输入了其他的输入值,那么我们的default这个情况了

注意:这里的break是跳出switch语句,不是do while循环,大家注意一下

1switch(input)
2{
3case 1:
4	printf("游戏开始,请输入数字\n");
5	break;//这里的break是跳出switch循环的
6case 2:
7	printf("退出游戏\n");
8	break;
9default:
10	printf("输入错误,请重新输入\n");
11	break;
12}
13

输入1的情况

输入2的情况

输入其他值的情况

二:分装一个函数

上面那个代码我还没有正式的将猜数字游戏的代码写进去

我们来简化一下上面的代码,此时我们要用到一个概念---封装一个函数

1.我们发现了两个函数,一个是menu()一个是game(),其实这个函数名字是可以随便取得,这里我为了好理解,就这样取的变量,menu就是菜单的意思,打开我们的猜数字游戏的界面,game就是游戏嘛,大家应该理解

1int main()
2{ 
3	//下面这个代码是生成变化的(种子)
4	srand((unsigned int)time(NULL));
5
6	int input = 0;
7	do
8	{
9		menu();//把上面那群代码封装到menu函数里面,这样就更加美观了
10
11		printf("请选择选项:");
12		scanf("%d", &input);
13
14		switch (input)
15		{
16		case 1://选择1游戏开始
17			game();//这里需要写许多代码,同样我们直接封装代码
18			break;//这里的break是跳出switch循环的
19		case 2:
20			printf("傻逼,游戏结束了\n");//选择2游戏结束
21			break;
22		default://输入不是1或者2的情况
23			printf("输入错误,请重新输入\n");
24			break;
25		}
26
27	} while (input);
28	return 0;
29}

下面这个代码是生成变化的(种子),这里由于编译器不认识time是整型函数,因此我们要强行转变为整型,也就在前面加上了 unsigned int(整型函数)

1srand((unsigned int)time(NULL));

下面这就是我们要将游戏界面封装进去的函数

1	menu();

具体的封装代码如下,此时我们就已经将我们的游戏界面的代码封装进去了

1void menu()//封装下面的代码,这里的函数类型,我们默认为void
2{
3	printf("*********************\n");
4	printf("******  1.开始游戏 ******\n");
5	printf("******  2.退出游戏 ******\n");
6	printf("*********************\n");
7}
8
9

这个是函数的原型,我们直接给它定义为void默认的函数的意思

1void menu()

2.这里还有一个game()函数的代码的封装,代码如下

1
2void game()//封装猜数字游戏的代码,这里的函数类型,我们默认为void
3{
4	int r = rand() % 100 + 1;//将1-100的随机数存放到  r  变量里面(生成1-100的随机数)
5
6	int count = 5;//设置只有5次猜数字的机会
7
8	int guess = 0;//设置猜数字的玩法,将我们猜的数字,存放在guess变量里面
9	while (count)
10	{
11		printf("你拥有%d次机会\n",count);
12		printf("游戏开始,请输入数字\n");
13		scanf("%d", &guess);
14		if (guess > r)
15		{
16			printf("猜大了\n");
17		}
18		else if (guess < r)
19		{
20			printf("猜小了\n");
21		}
22		else
23		{
24			printf("傻逼终于猜对了,正确数字是  %d\n",r);
25			break;//结束while循环
26		}
27		count--;//每次猜错,会减少一次机会
28	}
29	if (count == 0)//次数为0,游戏结束
30	{
31		printf("没有机会了,说明你还得练,小老弟\n");
32	}
33
34}
35

封装猜数字游戏的代码,这里的函数类型,我们默认为void

1
2void game()

这里是我们设置的随机数的范围,将1-100的随机数存放到 r 变量里面(生成1-100的随机数)

1int r = rand() % 100 + 1;//将1-100的随机数存放到  r  变量里面(生成1-100的随机数)

设置猜数字的玩法,将我们猜的数字,存放在guess变量里面

1int guess = 0;//设置猜数字的玩法,将我们猜的数字,存放在guess变量里面

设置只有5次猜数字的机会,其实我们可以不用这条件的,设置这是为了增加游戏的难度,更加好玩一些

1	int count = 5;//设置只有5次猜数字的机会

每次猜错,会减少一次机会,和上面的代码相辅相成

1count--;//每次猜错,会减少一次机会

次数为0,游戏结束

1if (count == 0)//次数为0,游戏结束

这个代码是我们给游戏设置的规则,如果我们的guess也就是我们输入的数字大于我们的r也就是随机数的话,我们就会给玩家提示你猜大了,同样的,我们猜小,系统就会提示我们猜小了,同样的猜对了也就是下面的那句话,大家可以自己设置的,可以不用和我的一样

注意:break;结束的是while循环,跳出去的不是我们的主函数啊,大家要搞清它的技术原理

1        if (guess > r)
2		{
3			printf("猜大了\n");
4		}
5		else if (guess < r)
6		{
7			printf("猜小了\n");
8		}
9		else
10		{
11			printf("傻逼终于猜对了,正确数字是  %d\n",r);
12			break;//结束while循环

三:猜数字游戏的完整代码

下面就是将我们上面一一拆开讲的代码全部放置在了一起,给大家好好看看

1void menu()//封装下面的代码,这里的函数类型,我们默认为void
2{
3	printf("*********************\n");
4	printf("******  1.开始游戏 ******\n");
5	printf("******  2.退出游戏 ******\n");
6	printf("*********************\n");
7}
8
9void game()//封装猜数字游戏的代码,这里的函数类型,我们默认为void
10{
11	int r = rand() % 100 + 1;//将1-100的随机数存放到  r  变量里面(生成1-100的随机数)
12
13	int count = 5;//设置只有5次猜数字的机会
14
15	int guess = 0;//设置猜数字的玩法,将我们猜的数字,存放在guess变量里面
16	while (count)
17	{
18		printf("你拥有%d次机会\n",count);
19		printf("游戏开始,请输入数字\n");
20		scanf("%d", &guess);
21		if (guess > r)
22		{
23			printf("猜大了\n");
24		}
25		else if (guess < r)
26		{
27			printf("猜小了\n");
28		}
29		else
30		{
31			printf("傻逼终于猜对了,正确数字是  %d\n",r);
32			break;//结束while循环
33		}
34		count--;//每次猜错,会减少一次机会
35	}
36	if (count == 0)//次数为0,游戏结束
37	{
38		printf("没有机会了,说明你还得练,小老弟\n");
39	}
40
41}
42
43int main()
44{ 
45	//下面这个代码是生成变化的(种子)
46	srand((unsigned int)time(NULL));//这里由于编译器不认识time是整型函数,因此我们要强行转变为整型,也就在前面加上了   unsigned int(整型函数)
47
48	int input = 0;
49	do
50	{
51		menu();//把上面那群代码封装到menu函数里面,这样就更加美观了
52
53		printf("请选择选项:");
54		scanf("%d", &input);
55
56		switch (input)
57		{
58		case 1://选择1游戏开始
59			game();//这里需要写许多代码,同样我们直接封装代码
60			break;//这里的break是跳出switch循环的
61		case 2:
62			printf("傻逼,游戏结束了\n");//选择2游戏结束
63			break;
64		default://输入不是1或者2的情况
65			printf("输入错误,请重新输入\n");
66			break;
67		}
68
69	} while (input);
70	return 0;
71}

我们正式开始游戏

我们首先运行一下代码,然后就是这个界面

让我们来输入1开始我们的猜数字游戏!!

输入1,这里我们有五次机会去猜数字

我们猜个20,发现小了

这里的五次机会全部用完了,可惜了没有猜中,其实我们可以设置的随机数范围小,这样就更加容易了

好了,以上就是我们的全部猜数字游戏的仔细讲解,希望大家能够喜欢这个游戏!!!!!


C语言趣味小游戏----猜数字小游戏》 是转载文章,点击查看原文


相关推荐


Python 的内置函数 aiter
IMPYLH2025/10/2

Python 内建函数列表 > Python 的内置函数 aiter 你是否曾经在异步编程中处理过异步迭代器(Async Iterators)?是否对 async for 循环背后的机制感到好奇?那么,aiter() 就是 Python 提供的一个关键工具,它允许我们更灵活地处理异步可迭代对象(Async Iterables)。 aiter 的函数原型如下: def aiter(async_iterable): ''' 获取异步可迭代对象的迭代器 :param a


改bug的一些体会
花王江不语10/1/2025

这篇摘要总结了代码调试的实用技巧:1)通过构造函数断点快速了解类使用方式;2)代码比对时重点关注首次差异点;3)不熟悉代码时先寻找正确案例对比;4)调试和日志要灵活运用,循环场景适合日志,测试机问题可通过动态库加日志解决;5)平衡调试与代码阅读,以理解代码为目的;6)始终围绕线索展开分析,避免偏离核心问题。这些方法强调务实、聚焦和工具选择的灵活性,帮助开发者高效定位和解决问题。


【开题答辩全过程】以 SpringBootVue的旅游租车管理系统为例,包含答辩的问题和答案
毕设源码-钟学长9/30/2025

这是一篇关于毕业设计答辩的纪实内容,主要记录了&quot;基于SpringBoot+Vue的旅游租车管理系统&quot;的答辩过程。答辩学生详细介绍了系统功能(租车+旅游推荐)、技术架构(SpringBoot+Vue+MySQL)和关键实现(库存控制、登录认证等)。评委老师针对系统设计、数据一致性、推荐算法等提出专业问题,学生给出了具体的技术解决方案。最后评委肯定选题价值和技术实现,建议完善旅游信息模块。文末提供开题报告参考和毕设指导服务,适合处于开题阶段的学生参考使用。全文突出了系统设计细节和答辩应对技巧


chrome-devtools-mcp windows 环境安装
monkeySix2025/10/2

问题: Could not find Google Chrome executable for channel 'stable' at 'C:\Program Files\Google\Chrome\Application\chrome.exe'. 解决方案: "chrome-devtools": { "command": "npx", "args": [ "chrome-devtools-mcp@latest", "-


【算法导论】PDD 0928 笔试题解
PAK向日葵2025/10/4

快递单号 多多在快递公司负责快递单号录入工作,这些单号有严格的格式要求: 快递单号由3部分组成:2位大写字母(A~Z) + 6位数字 + 1位校验位 校验位计算规则:取前8位(2 字母 + 6 数字)中每个字符的ASCII码之和,对26取余后,加上A的ASCII码,得到的字符即为校验位 现在有一批可能存在校验位错误的单号,请你编写程序: 若单号格式正确且校验位正确,返回原单号 若前 8 位格式正确但校验位错误,返回修复后(校正校验位)的单号 若前 8 位格式错误(非 2 字母 + 6 数字)或


Qwen3 Omni 的“全模态”,到底和多模态有啥不一样?
飞哥数智谈2025/10/5

前一阵阿里云栖大会,其中有个发布内容是全模态大模型 Qwen3-Omni。 说实话,这是我第一次真正地审视“全模态大模型”这个概念,因为之前 Qwen2.5-Omni 发布的时候,有了解过,但不多。 简介 先从概念上简单介绍下什么是“全模态大模型”。 “Qwen3-Omni是新一代原生全模态大模型,能够无缝处理文本、图像、音频和视频等多种输入形式,并通过实时流式响应同时生成文本与自然语音输出。” 多模态大模型 vs 全模态大模型 接下来,为了更好地理解,我们与“多模态大模型”做个对比。 相同点是


Spring Cloud之负载均衡之LoadBalance
新绿MEHO2025/10/6

目录 负载均衡 问题 步骤 现象  什么是负载均衡? 负载均衡的一些实现 服务端负载均衡 客户端负载均衡 使用Spring Cloud LoadBalance实现负载均衡 负载均衡策略 ​编辑 ​编辑LoadBalancer原理 服务部署 准备环境和数据 服务构建打包 启动服务 上传Jar包到云服务器 启动服务 远程调用访问  负载均衡 问题 上面是我们之前的代码,是根据应用名称获取了服务实例列表,并从列表中选择了一个服务实例。 那如果


【鸿蒙生态共建】一文说清复杂类型数据的非预期输入转换与兜底-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利
俩毛豆2025/10/7

在客户端开发中,你是否曾遇到过这样的困扰:一次看似寻常的网络数据解析,却导致了出人意料的崩溃;一个本该正常的文件读取操作,却返回了难以理解的数据错误。这些问题的根源,往往指向同一环节——数据类型转换。当应用面对网络传输、文件I/O等不可控的数据源时,如何稳健、准确地进行数据解析与转换,就成为保障应用稳定性的第一道防线。 本篇内容是《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》这本书第四章内容的延续,是咱这本书读者的福利,在本篇内容中以模拟多种数据输入,向复杂类型(类、数


Seata分布式事务框架详解与项目实战
IT橘子皮2025/10/9

一、Seata核心架构与原理 Seata(Simple Extensible Autonomous Transaction Architecture)是阿里巴巴开源的分布式事务解决方案,旨在为微服务架构提供高性能、易用性的分布式事务支持。其核心设计理念是"化繁为简",通过封装传统分布式事务模式的复杂性,降低分布式一致性问题的解决门槛。 ​核心组件​: ​TC(Transaction Coordinator)​​:事务协调者,维护全局事务和分支事务的状态,负责协调全局事务提交或回滚 ​TM(


我用亲身经历告诉你,为什么程序员千万别不把英语当回事
oioihoii2025/10/10

年轻人,如果你现在觉得写代码只需要认识 if/else 和 for 循环里的那几个英文单词就够了,那你简直像极了十年前的我。而今天的我,多想回到过去,给那个骄傲自满的自己一记响亮的耳光。 我不是以成功者的姿态来教导你,而是以一个踩过坑、吃过亏、肠子都悔青了的过来人身份,跟你聊聊我最后悔的一件事——没有早点学好英语。 一、工作里吃的哑巴亏,都是我当年脑子进的水 1. “啃”二手资料的酸楚 还记得那次,团队要引入一个热门的新框架。我兴冲冲地找了几篇中文博客,照猫画虎地搞了起来。结果,掉进了一个坑里,

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0