[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第93讲。
蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选了一部分题目进行解读。
第11届蓝桥杯青少年组第6次选拔赛于原定于2020年2月15日举行,因为疫情延期到5月31日,形式为线上考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
123数字黑洞,本题是2020年2月15日举行的第11届蓝桥杯Scratch选拔赛真题编程第4题,初级组和中级组都有此题,题目要求编程验证123数学黑洞的计算过程。
先来看看题目的要求吧。
一.题目说明
背景信息:
“123数学黑洞”,指的是对于任意一串数字串,按照一定规则经有限次重复后必得到“123”的结果,即任何数的最终结果都无法逃脱123黑洞。
其中的规则如下:
1). 对任何一串数字串统计出其中的偶数个数、奇数个数、总个数;
2). 按照“偶-奇-总”的方式进行排列,得到新的数字串;
再不断循环这个算法,其最终结果一定会变成123。例如:12345,偶数个数2,奇数个数3,总个数5,我们得到235;235,偶数个数1,奇数个数2,总个数3,我们得到123;
编程实现:
1). 当绿旗被点击,请用户输入任意长度数字串,如图例1;
![图片[1]-scratch123数字黑洞_第11届蓝桥杯scratch选拔赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-533.png)
2). 输入数字串之后,说出这个数字串第一次计算的结果,第二次计算的结果,第三次.…..直到计算结果为123,如图例2。
![图片[2]-scratch123数字黑洞_第11届蓝桥杯scratch选拔赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-534.png)
![图片[3]-scratch123数字黑洞_第11届蓝桥杯scratch选拔赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-535.png)
![图片[4]-scratch123数字黑洞_第11届蓝桥杯scratch选拔赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-536.png)
评判标准:
- 20分:能够正常输入数字串;
- 30分:小猫的第一次计算结果是正确的;
- 30分:小猫每次计算结果正确并最后得到123;
- 20分:小猫每次对次数的表述也完全正确,且完全符合题意。
二.效果预览
在编程之前,先来看看作品的完整效果吧:
三.思路分析
本题只有1个角色,就是默认的小猫,如图所示:
![图片[5]-scratch123数字黑洞_第11届蓝桥杯scratch选拔赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-537-904x1024.png)
这是一道经典的递归算法题,那什么是递归呢?
所谓递归,是指在函数的定义中使用函数自身的方法。通俗理解就是:我调用我自己。这是一种常用的解决问题的方法,它可以把”大事化小,小事化了“,从而轻松的解决问题。
看看下面这张图,你立刻就能理解什么是递归了。
![图片[6]-scratch123数字黑洞_第11届蓝桥杯scratch选拔赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-538.png)
构成递归需具备两个条件:
1). 子问题须与原始问题为同样的事,且更为简单;
2). 不能无限制地调用本身,须有个出口。
对于本题而言,对于任何一个给定的数字串,先分别计算出偶数个数、奇数个数和总个数,然后组合得到一个新的数字,再重复这个操作,这就是一个典型的递归过程,递归的出口就是数字等于123。
在Scratch中,实现递归的方式就是定义一个自制积木,然后在自制积木中调用自己,自制积木必须带有参数,同时要有结束条件。
算法的流程图如下:
![图片[7]-scratch123数字黑洞_第11届蓝桥杯scratch选拔赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-539.png)
至于统计偶数和奇数就比较简单了,使用循环逐个取出每个数字,再结合”a除以b的余数“指令,就可以很轻松的判断是偶数还是奇数了。
四.编程实现
根据题目描述和思路分析,我们可以分三步来编写程序:
- 定义自制积木
- 使用自制积木
- 完善代码
1. 定义自制积木
创建一个自制积木,将其命名为”123数字黑洞“,并添加参数”数字“,如图:
![图片[8]-scratch123数字黑洞_第11届蓝桥杯scratch选拔赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-540-1024x784.png)
然后编写代码如下:
![图片[9]-scratch123数字黑洞_第11届蓝桥杯scratch选拔赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-541-700x1024.png)
简要说明如下:
1). 在代码块的最后,又使用用了自制积木,这就是递归的体现,即在函数中调用自己(在Scratch中,自制积木就是函数);
2). 在Scratch中,对于数字,可以作为字符串来使用,所以这里获取数字和连接数字,使用的都是字符串指令。
2. 使用自制积木
有了自制积木,接下来就容易了,当绿旗被点击时,使用问答指令,然后调用自制积木即可,对应的代码如下:
![图片[10]-scratch123数字黑洞_第11届蓝桥杯scratch选拔赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-542.png)
3. 完善代码
运行程序,当输入888888时,第一次显示的效果如下:
![图片[11]-scratch123数字黑洞_第11届蓝桥杯scratch选拔赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-543.png)
这和题目的要求有些不相符,我们可以增加一个变量“次数”,表示当前是第几次,在绿旗下面,将其初始化为0,增加代码如下:
![图片[12]-scratch123数字黑洞_第11届蓝桥杯scratch选拔赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-544.png)
对应的,在自制积木中,改动两个小地方,如下:
![图片[13]-scratch123数字黑洞_第11届蓝桥杯scratch选拔赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-545-863x1024.png)
在说话指令中,使用了4个连接运算符,编写代码的时候,一定要细心一点,避免出错。
再次运行程序,这一次和题目要求就完全一致了,你可以输入任何长度的数字串来看看黑洞效果吧。
五.总结与思考
本题难度系数为4,积木块数量45个左右 ,涉及到的知识点主要包括:
- 递归的算法思想及其特点;
- 自制积木及其参数的使用,重点是递归的实现;
- 如何判断奇偶数,使用取余数指令看余数是否等于0;
- 字符串运算符,包括获取总个数,获取指定字符和连接操作;
- 使用循环结合变量来遍历字符串;
- 循环和条件的嵌套用法。
本题有一定难度,重点是理解递归算法的编程思想及其实现。要实现递归需要确保如下三个方面:
1). 必须有自制积木,并且是带参数的自制积木,每次调用的参数都不一样;
2). 在自制积木中调用自制积木;
3). 必须有结束条件,否则就陷入死循环。
你知道吗,123数字黑洞还有一个名字,叫做西西弗斯黑洞,这又是为什么呢?
西西弗斯的故事出自希腊神话,天神为了惩罚科林斯国王西西弗斯,将一块巨石推到一座陡峭的山顶上,但无论他怎样努力,这块巨石总是在到达山顶时却又不可避免地滚下来,于是他只得重新再推,永无休止。
![图片[14]-scratch123数字黑洞_第11届蓝桥杯scratch选拔赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-546-1024x576.png)
之所以把数字串123称作西西弗斯串,意思是说对于任意一数字串按本程序进行计算,所得的结果都是123,而且一旦变成123后,无论再计算多少次,都会永无休止地重复着123。
需要素材和源代码的,可以转到这里,数字黑洞-2020.5.31蓝桥选拔赛第5题。
暂无评论内容