[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第43讲。
第12届蓝桥杯青少年组省赛分两次进行,这是2021年4月24日举行的第二次省赛考试初级组,形式为在线考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
求逆序数,本题是第12届蓝桥杯Scratch第二次省赛真题初级组编程第3题,题目要求考生编程求逆序数,在对话框中输入指定范围的数字,小猫会说出输入数字和它的逆序数。
先来看看题目的要求吧。
一.题目说明
编程实现:
在对话框中输入指定范围的数字,小猫会说出输入数字和它的逆序数。
例如:1234,它的逆序数字:4321。
具体要求:
1). 点击绿旗,出现对话框;
2). 小猫说:“请输入10-999之间的任意数字”;
![图片[1]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-16.png)
3). 在输入框输入数字后,小猫说出输入数字;
![图片[2]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-17.png)
4). 等待1秒钟,小猫说出逆序数字;
![图片[3]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-18.png)
5). 如果输入数字不在指定输入范围内,则小猫说不成立。
![图片[4]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-19.png)
评判标准:
- 5分:满足要求1);
- 10分:满足要求2);
- 15分:满足要求3);
- 15分:满足要求4);
- 15分:满足要求5)。
二.效果预览
在编程之前,先来看看作品的完整效果吧:
三.思路分析
本题使用的是Scratch默认的舞台白色背景和小猫角色,如图所示:
![图片[5]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-21-896x1024.png)
本题是一个典型的IPO模式编程,所谓的IPO是指输入-处理-输出,详细的介绍可以参考《数字与图形-第13届蓝桥杯Scratch国赛真题第5题》。
输入、处理和输出的过程相对比较简单,其流程如图所示:
![图片[6]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-22-864x1024.png)
这里的重点是如何求逆序数,原理其实比较简单,就是从最后一个数字开始往前挨个取出数字,进行重新连接,具体的过程,可以用流程图描述如下:
![图片[7]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-23-563x1024.png)
有了流程图,我们就可以很轻松地来编写代码了。
四.编程实现
根据上面的思路分析,我们可以分3步来编写程序:
- 创建变量
- 完成主体逻辑
- 得到逆序数
1). 创建变量
根据前面的思路分析,本题需要使用3个变量,分别是“输入数字”、“逆序数”和“i”,先创建好变量,如图所示:
![图片[8]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-24.png)
这里的变量使用全局变量即可,其中,输入数字是指用户通过键盘输入的数字,逆序数就是最终要得到的数字,而i则是计数器,用于表示当前是第几个数字。
2). 完成主体逻辑
接下来,我们就可以编写程序的主体逻辑了,根据上面的第一个流程图,在小猫角色中编写代码如下:
![图片[9]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-25.png)
代码也比较好理解,简要说明两点:
①. 要确保数字在10到999之间(包括10和999),用数学来描述就是“10 ≤ 输入数字 ≤ 999”,但是Scratch中没有这种连写方式,需要拆分成两个条件,然后使用逻辑运算进行合并。这里拆分成了“输入数字 < 10”和”输入数字 > 999″,然后使用逻辑或连接,表示的是不成立的情况。
②. 否则指令目前是空的,具体实现请看第3步。
3). 得到逆序数
重点来了,如果数字在10到999范围内,就需要获取它的逆序数了,如果将数字当作字符串来看的话,其实就是如何使用Scratch来操作字符串了。
在Scratch中,和字符串相关的运算指令有如下几个:
![图片[10]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-26.png)
在本题中,我们需要用到前面3个指令,需要注意的是第一个指令“连接苹果和香蕉”。如果使用变量逐个来连接字符,该变量的初始值需要设置为空,而不是0,所谓空,就是去掉圆圈中的内容,什么都不用写,如图所示:
![图片[11]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-27.png)
我们要得到逆序数,那就应该从后面往前面挨个取出字符,因此,需要先将i设置为“输入数字的字符数”,如果有两个数字,i就是2,如果有3个数字,i就是3。接着就是循环将取出的字符进行连接即可,每连接一个字符,就将i减1,直到i=0,结束循环,具体的代码如图所示:
![图片[12]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-28.png)
将这段代码放到前面的“否则”指令里面即可。
五.总结与思考
本题难度系数为2,一共31个积木块,分值为60,涉及到的知识点主要包括:
- Scratch问答模块,包括询问并等待和回答指令;
- 变量的使用;
- 字符串操作及字符串运算指令的灵活运用;
- 循环编程,这里用到的是重复直到循环;
- 比较运算符和逻辑运算符的组合使用;
- IPO模式的理解与应用。
总体来说,这是一道简单的题目,解决题目的核心是Scratch字符串操作,通常需要结合循环和变量逐个取出字符,进行相应的处理。
字符串处理在高级语言编程中(比如Python、C++、Java等)十分常见,也是非常重要的。相对来说,在Scratch图形化编程中,字符串的功能并不强大,只需要熟练掌握好前面提到的4个指令即可。
需要素材和源代码的,可以转到这里,求逆序数-2021.4.24蓝桥杯省赛第3题。
暂无评论内容