[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第69讲。
蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选了一部分题目进行解读。
第14届蓝桥杯青少年组第一次选拔赛于2022年8月21日举行,形式为线上考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
回文数,本题是第14届蓝桥杯Scratch选拔赛真题编程第4题,初级组和中级组都有此题,题目要求编程实现数字计算功能,对于输入正确的正整数,如果是回文数,则输出该数字,否则就输出数字和逆序数的和。
先来看看题目的要求吧。
一.题目说明
背景信息:
逆序数:倒序呈现的数字,例如: 123的逆序数为321
回文数:与它的逆序数字相同例如: 1、2、3、4…11、 121……
编程实现:
数字计算。
具体要求:
1). 运行程序,角色、背景如图所示:
![图片[1]-scratch回文数_第14届蓝桥杯stema测评真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-255.png)
2). 等待1秒后,小猫说: “请输入一个正整数”;
![图片[2]-scratch回文数_第14届蓝桥杯stema测评真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-256.png)
3). 如果输入数值不是正整数,小猫说: “输入错误”;
![图片[3]-scratch回文数_第14届蓝桥杯stema测评真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-257.png)
4). 当正整数为回文数字时,小猫说出此正整数1秒;
![图片[4]-scratch回文数_第14届蓝桥杯stema测评真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-258.png)
5). 如果输入数值是正整数且不为回文数时,小猫说出此正整数与它的逆序数字之和;
![图片[5]-scratch回文数_第14届蓝桥杯stema测评真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-259.png)
6). 程序持续重复2)、3)、4)、5)步骤。
二.效果预览
在编程之前,先来看看作品的完整效果吧:
三.思路分析
本题只有1个角色,就是默认的小猫,如图所示:
![图片[6]-scratch回文数_第14届蓝桥杯stema测评真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-260-893x1024.png)
这是一道和数学紧密结合的算法题,玩家在输入完内容之后,程序要判断输入内容是否为正整数,如果不是,则直接提示“输入错误”,否则就判断该数字是否为回文数,如果是回文数,则直接输出该数字,否则就计算该数字及其逆序数的和并输出,基本流程如下:
![图片[7]-scratch回文数_第14届蓝桥杯stema测评真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-261-818x1024.png)
针对上面的需求,我们要解决两个关键点:
- 判断输入的内容是否为正整数
- 求逆序数
其中,求逆序数相对简单一点,在第12届蓝桥杯省赛中出现过求逆序数的题目,你可以去参考一下,《求逆序数-第12届蓝桥杯Scratch省赛3真题第3题》。
重点是如何判断输入的内容是正整数,玩家输入的有可能是汉字、字母,就算是数字,也有可能输入的是小数或者负数,我们该如何判断呢?
其实也不难,所谓正整数,就是指在输入的字符中,只能出现0、1、2、3、4、5、6、7、8、9这些数字,只要出现其它字符,就说明不是整数。
因此,我们可以创建一个列表,列表中保存0到9这10个数字,然后利用循环逐个判断输入内容中的字符是否包含在列表中,如果不在列表中,就说明该输入不是正整数,如果所有的字符都包含在列表中,就说明这是一个正整数。
由于判断正整数和求逆序数是两个相对独立的功能,我们可以将它们定义成自制积木,然后在主程序中调用即可。
四.编程实现
根据题目描述和思路分析,我们可以分3步来编写程序:
- 判断正整数
- 计算逆序数
- 完成主程序
1. 判断正整数
首先创建一个列表“数字”,并将0、1、2、3、4、5、6、7、8、9这10个数字加入到列表中,如图所示:
![图片[8]-scratch回文数_第14届蓝桥杯stema测评真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-262.png)
接下来创建一个自制积木,将其命名为“判断正整数”,并添加一个参数“数字”,如图:
![图片[9]-scratch回文数_第14届蓝桥杯stema测评真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-263-1024x785.png)
同时,需要创建两个变量,分别命名为“flag”和“i”,flag用于表示是否为正整数,它有两个取值,为1时表示是正整数,为0时表示不是正整数;i表示计数器,用于循环遍历输入的字符串。
编写自制积木的代码如下:
![图片[10]-scratch回文数_第14届蓝桥杯stema测评真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-264.png)
2. 计算逆序数
计算逆序数相对简单一些,只需要按照从尾到头的顺序来遍历字符串,逐个取出字符再依次拼接即可,创建自制积木“计算逆序数”,并编写代码如下:
![图片[11]-scratch回文数_第14届蓝桥杯stema测评真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-265.png)
需要注意的是,对于字符串连接,需要将变量的初始值设置为空字符串。计算逆序数的过程也是遍历字符串的过程,这体现了编程中的枚举算法思想。
3. 完成主程序
有了上面定义好的两个自制积木,接下来的主程序就比较简单了,只需要使用问答指令获取用户输入,然后调用自制积木即可,代码如下:
![图片[12]-scratch回文数_第14届蓝桥杯stema测评真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-266-466x1024.png)
代码使用了多层嵌套,第一层是“重复执行”里面嵌套了“如果…那么…否则”,第二层是“如果…那么…否则”又嵌套了一个“如果…那么…否则”。如果没有使用自制积木的话,嵌套的层数会更深,这也充分体现了使用自制积木的好处,即简化代码结构。
五.总结与思考
本题有一定的难度,积木块数量在57个左右,涉及到的知识点主要包括:
- 列表的使用,重点是判断某个内容是否在列表中;
- Scratch问答指令,包括询问并等待和回答指令;
- 字符串运算,包括获取字符串长度、获取某个字符和字符串连接;
- 结合循环遍历字符串 ;
- 自制积木及其参数的使用;
- 循环和条件指令的嵌套使用。
本题以数学中的回文数作为编程背景,具有很强的趣味性,在计算逆序数的过程中,又涉及了枚举的算法思想,是一道含金量非常高的编程题。
需要素材和源代码的,可以转到这里,回文数-2022.8.21蓝桥杯stema第4题。
暂无评论内容