[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第179讲。
如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,查阅教程更方便。
第15届蓝桥杯第5次STEMA测评已于2024年3月10日落下帷幕,编程题一共有6题(初级组只有前5道编程题),分别如下:
-
熊猫左右转
-
返回地球
-
吐丝的蜘蛛
-
最大的三位数
-
记忆力考验游戏
-
回文数
回文数,本题是2024年3月10日举行的第15届蓝桥STEMA测评Scratch编程中级组编程第6题,初级组没有此题。题目要求编程求回文数。当输入一个正整数后,说出其倒序数,并将二者的和加入列表,直到和是回文数为止。
先来看看题目的要求吧。
一.题目说明
背景信息:
倒序数:将原来的整数的数字顺序倒过来组成的数。
例如:28的倒序数为82,10的倒序数为1。
回文数:一个整数与其倒序数相等,则称该数为回文数。
例如:22的倒序数为22,两者相等,故22为回文数。
编程实现:
回文数。
具体要求:
1). 点击绿旗,列表1为空,角色、背景如图所示;
2). 1秒后,螃蟹说“请输入1~100的整数”,同时弹出输入框,如图所示;
例如:输入19。
3). 输入完成后,螃蟹说出输入整数的倒序数,如图所示;
4). 然后,将输入的数与其倒序数的和加入列表1中,如图所示;
例如:19与其倒序数91的和为110。
5). 如果求得的和不是回文数,继续将求得的和与其倒序数再求和,并將得到的结果加入列表1中,如图所示;
例如:求得的和110不是回文数,将110与其倒序数11再求和,得到的结果为121。
6). 重复执行具体要求5),当求和的结果为回文数时,程序结束。
评判标准:
-
4分:满足"具体要求"中的1);
-
4分:满足"具体要求"中的2);
-
20分:满足"具体要求"中的3);
-
17分:满足"具体要求"中的4);
-
30分:满足"具体要求"中的5);
-
25分:满足"具体要求"中的6)。
二.思路分析
本题只有1个螃蟹角色,如图所示:
很显然,这是一道简单的数论算法题,考查的是回文数算法,包括列表运算、字符串处理和自制积木等知识点。
说到回文数,你肯定不陌生,一个自然数,如果从左向右看和从右向左看数字都一样,换句话说,就是数字排列左右对称,就把它叫做“回文数”。
比如121、5335、6084806都是回文数,当然,由同一个数字组成的数,如6、88、999也是回文数。
实际上,这是一道曾经考过的题目,2022年8月21日举行的第14届选拔赛的第4题,可以参考《回文数-第14届蓝桥杯Scratch选拔赛真题》这篇教程。
关于回文数的判断,一般有如下三种方式:
-
字符串反转
-
数字反转
-
逐位判断
其中,前两种方法都需要得到倒序数,正好符合本题的要求。在Scratch中,数字可以直接当作字符串来进行处理,因此字符串反转方法是首选。
所谓的字符串反转,就是遍历整个数字字符串,分别取出每一位,再进行字符串连接。在具体实现时,通常有两种思路:
1). 正序遍历,前面插入
2). 倒序遍历,后面追加
两种方法都可以,相对来说,第一种要简单一些。
由于要反复计算某个数字的倒序数,为了方便,建议使用函数的编程思想,定义一个自制积木,用于计算给定数字的倒序数。
思路有了,接下来,我们就进入具体的编程实现环节。
三.编程实现
根据上面的思路分析,我们可以分两步来编写程序:
-
定义自制积木
-
完成主程序
1. 定义自制积木
根据前面的思路分析,定义自制积木如下:
代码比较简单,强调4点:
1). 自制积木带有参数,在整个自制积木中,都是使用参数来处理的;
2). 倒序数变量的初始值必须设置为空字符串,不能是数字0;
3). 这里采取的是正序遍历前面插入的方式来拼接字符串的;
4). 字符串倒过来,会出现0开头的情况,比如110倒过来是011,为避免这种情况,可以将字符串转成数字,这就是“将倒序数增加0”指令的作用。
调用这个自制积木,传入一个数字,就可以得到倒序数,并保存到变量“倒序数”中了。
2. 完成主程序
接下来,就可以按照题目的要求来完成主程序了,代码如下:
代码有点多,说明4点:
1). 列表在使用之前一定要清空;
2). 由于说倒序数不需要重复执行,所以第一次求倒序数要单独调用,参数就是输入的数字,直接使用“回答”指令表示;
3). 为了方便,这里使用变量“和”来表示原数字和倒序数之和;
4). 注意“重复执行”指令的位置,这个非常有技巧性,任何时候,都需要先将和加入列表,所以第一次加入列表时,不用放到循环中,这样代码就变得更简洁了。
至此,整个作品就创作好了,你可以输入1~100之间的任何整数来进行测试啦。
四.总结与思考
本题是中级组编程部分第6题,分数为100分,积木块数量42个左右,涉及到的知识点主要包括:
-
scratch问答指令;
-
循环编程,包括计数循环和无限循环;
-
列表的使用;
-
字符串处理;
-
自制积木;
这是中级组的最后一题,初级组没有这道题,难度中等,完成时间20分钟左右。本题的重点是如何使用计算出倒序数,难点在于重复计算倒序数并加入列表的逻辑处理。
相对于前面几次的测评而言,这一次的压轴题还是要简单不少,代码量不多,逻辑也并不复杂。
所以,超平老师经常给孩子们讲,一定要合理安排每道题的答题时间,最后一题的分值最高,但并不一定是最难的。不要等考试成绩出来了,嘀嘀咕咕说这道题我会,就是没有时间做。
更为关键的是,这还是一道原题,两题的相似度在90%左右。所以说,要想在比赛中获得好的成绩,历届真题是最好的复习资料,一定要重视真题,多练习,多思考,多总结。
超平老师给你留两道思考题:
1). 如果输入的不是数字,会出现什么情况,能否增加一个判断,确保输入的必须是数字;
2). 题目限定了数字范围是1~100,如果没有限制,比如输入9999,会出现什么情况,又该如何处理呢?
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄
需要素材和源码的,可以移步至“超平的编程课”gzh。