[导读]:超平老师计划推出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秒);
步骤2:列表1开始自动运算。自动运算结束后列表1中显示所有情况,博士汪要面向列表1的方向(向左即可)说出列表1中一共有多少种情况(2秒);
步骤3:列表2开始自动运算,运算结束后列表2中显示所有情况,博士汪面向列表2的方向(向右即可)说出列表2中一共有多少种情况(2秒),程序结束。
将程序保存在桌面,命名为“5.sb2”。
评判标准:
20分:实现步骤1;
40分:在20分基础上,实现步骤2;
40分:在60分基础上,实现步骤3。
本题只有1个小狗角色,如图所示:
又是一道涉及到枚举算法的作品,所谓枚举算法就是将所有问题的可能性一一列举出来,并判断是否符合给定条件。
对于枚举算法,通常需要结合循环来实现,当有多个变量的时候,则需要使用嵌套循环,这里有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个变量,如图所示:
创建好两个列表,如下:
当绿旗被点击时,先清空列表,并设置好小狗的方向,然后说”我要开始计算了!“,对应的代码如下:
2. 使用枚举循环判断
接下来, 就需要使用枚举的算法思想,逐个进行判断,根据思路分析,继续编写代码如下:
代码不难,只是嵌套的层数比较多,要细心一点,避免写错,在最内层的循环中,有一个”判断条件“的自制积木,它的作用就是对组合出来的数字进行判断,其定义如下:
其中,第一个如果指令中的条件就是ABCD * E = DCBA,对于左边的A、B、C来说,分别表示千位、百位、十位,所以需要分别乘以1000、100、10,然后再进行相加,右边的也是如此。
接下来的4个如果指令用来判断A、B、C、D、E各不相同,刚好对应于4思路分析中的4个条件。
3. 说出结果
在循环结束之后,列表1和列表2分别有了各自的数据,按照题目要求直接说出它们的项目数即可,这部分代码如下:
代码比较简单,注意在说完第一句话后,需要将小狗的方向设置为90度,即面向右边。
本题难度系数为7,积木块数量120个左右 ,涉及到的知识点主要包括:
嵌套循环;
条件嵌套;
枚举的算法思想及实现方式;
变量和列表的灵活运用;
运算符的运用,包括算术运算、字符串运算和逻辑运算;
自制积木的使用。
本题难度较大,重点是理解枚举的算法思想及实现方式,所有的枚举算法都包含循环结构和条件结构,循环的层数取决于变量的个数,变量越多,嵌套的层数也就越深,在编写程序的时候一定要细心,避免出错。
如果你觉得文章对你有所帮助,别忘了点赞,你的鼓励是我坚持继续写下去的最大动力,Thanks♪(・ω・)ノ。