[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第95讲。
蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选了一部分题目进行解读。
第11届蓝桥杯青少年组第4次选拔赛于2019年12月15日举行,形式为线下考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
数字游戏ABCD*E=DCBA,本题是2019年12月15日举行的第11届蓝桥杯Scratch地区选拔赛真题编程第5题,题目要求编程实现数字游戏,找出满足ABCD*E=DCBA等式的数字组合。
先来看看题目的要求吧。
一.题目说明
编程实现:
问题1:已知A、B、C、D、E分别代表0-9之间的数字。由A、B、C、D组成四位数ABCD和DCBA,还要满足算式:ABCD * E=DCBA(提示:在程序设计语言中“*”代表乘号)。例如1991*1=1991,则在列表1中输出19911。
请在列表1中按照从小到大的顺序输出所有可能的数字组合。
样例输出:
00000
00001
00002
00003
……
问题2:在问题1的基础上,现在要求数字A、B、C、D、E均不相同,在列表2中输出这样的数字组合。
具体要求:
步骤1:如下图,列表放在博士汪的左右两侧,绿旗被点击,清空所有列表,博士汪面向左,说“我要开始计算了!”(2秒);
![图片[1]-scratch数字游戏ABCD*E=DCBA_第11届蓝桥杯scratch选拔赛真题-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-558.png)
步骤2:列表1开始自动运算。自动运算结束后列表1中显示所有情况,博士汪要面向列表1的方向(向左即可)说出列表1中一共有多少种情况(2秒);
![图片[2]-scratch数字游戏ABCD*E=DCBA_第11届蓝桥杯scratch选拔赛真题-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-559.png)
步骤3:列表2开始自动运算,运算结束后列表2中显示所有情况,博士汪面向列表2的方向(向右即可)说出列表2中一共有多少种情况(2秒),程序结束。
![图片[3]-scratch数字游戏ABCD*E=DCBA_第11届蓝桥杯scratch选拔赛真题-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-560.png)
将程序保存在桌面,命名为“5.sb2”。
评判标准:
- 20分:实现步骤1;
- 40分:在20分基础上,实现步骤2;
- 40分:在60分基础上,实现步骤3。
二.效果预览
在编程之前,先来看看作品的完整效果吧:
三.思路分析
本题只有1个小狗角色,如图所示:
![图片[4]-scratch数字游戏ABCD*E=DCBA_第11届蓝桥杯scratch选拔赛真题-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-561-895x1024.png)
又是一道涉及到枚举算法的作品,所谓枚举算法就是将所有问题的可能性一一列举出来,并判断是否符合给定条件。
对于枚举算法,通常需要结合循环来实现,当有多个变量的时候,则需要使用嵌套循环,这里有A、B、C、D、E五个变量,因此循环的层数有5层。
A、B、C、D、E五个变量的取值范围都是0到9,然后将它们组成一个五位数,如果满足ABCD * E = DCBA,则将其加入到列表1中。这里涉及到将多个一位数组合得到一个多位数的编程技巧,在Scratch中,有两种方法,一是直接使用字符串连接运算,二是使用数学运算。
列表2中的数据,则是在列表1的数据中进行二次筛选,要求数字A、B、C、D、E均不相同,我们可以将其拆分成4个条件:
- A和B、C、D、E都不相等
- B和C、D、E都不相等
- C和D、E都不相等
- D和E不相等
将同时满足这4个条件的数字组合加入到列表2中即可。由于代码比较长,我们可以使用自制积木来简化代码结构。
四.编程实现
根据题目描述和思路分析,我们可以分3步来编写程序:
- 准备工作
- 使用枚举循环判断
- 说出结果
1. 准备工作
先创建好6个变量,如图所示:
![图片[5]-scratch数字游戏ABCD*E=DCBA_第11届蓝桥杯scratch选拔赛真题-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-562.png)
创建好两个列表,如下:
![图片[6]-scratch数字游戏ABCD*E=DCBA_第11届蓝桥杯scratch选拔赛真题-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-563.png)
当绿旗被点击时,先清空列表,并设置好小狗的方向,然后说”我要开始计算了!“,对应的代码如下:
![图片[7]-scratch数字游戏ABCD*E=DCBA_第11届蓝桥杯scratch选拔赛真题-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-564.png)
2. 使用枚举循环判断
接下来, 就需要使用枚举的算法思想,逐个进行判断,根据思路分析,继续编写代码如下:
![图片[8]-scratch数字游戏ABCD*E=DCBA_第11届蓝桥杯scratch选拔赛真题-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-565-349x1024.png)
代码不难,只是嵌套的层数比较多,要细心一点,避免写错,在最内层的循环中,有一个”判断条件“的自制积木,它的作用就是对组合出来的数字进行判断,其定义如下:
![图片[9]-scratch数字游戏ABCD*E=DCBA_第11届蓝桥杯scratch选拔赛真题-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-566-1024x634.png)
其中,第一个如果指令中的条件就是ABCD * E = DCBA,对于左边的A、B、C来说,分别表示千位、百位、十位,所以需要分别乘以1000、100、10,然后再进行相加,右边的也是如此。
接下来的4个如果指令用来判断A、B、C、D、E各不相同,刚好对应于4思路分析中的4个条件。
3. 说出结果
在循环结束之后,列表1和列表2分别有了各自的数据,按照题目要求直接说出它们的项目数即可,这部分代码如下:
![图片[10]-scratch数字游戏ABCD*E=DCBA_第11届蓝桥杯scratch选拔赛真题-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-567.png)
代码比较简单,注意在说完第一句话后,需要将小狗的方向设置为90度,即面向右边。
五.总结与思考
本题难度系数为7,积木块数量120个左右 ,涉及到的知识点主要包括:
- 嵌套循环;
- 条件嵌套;
- 枚举的算法思想及实现方式;
- 变量和列表的灵活运用;
- 运算符的运用,包括算术运算、字符串运算和逻辑运算;
- 自制积木的使用。
本题难度较大,重点是理解枚举的算法思想及实现方式,所有的枚举算法都包含循环结构和条件结构,循环的层数取决于变量的个数,变量越多,嵌套的层数也就越深,在编写程序的时候一定要细心,避免出错。
需要素材和源代码的,可以转到这里,数字游戏ABCD*E-2019.12.15蓝桥选拔赛第5题。
暂无评论内容