求逆序数-第12届蓝桥杯Scratch省赛3真题第3题

[导读]:超平老师计划推出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届蓝桥杯省赛教程-超平的编程课

3). 在输入框输入数字后,小猫说出输入数字;

图片[2]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课

4). 等待1秒钟,小猫说出逆序数字;

图片[3]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课

5). 如果输入数字不在指定输入范围内,则小猫说不成立。

图片[4]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课

评判标准:

  • 5分:满足要求1);
  • 10分:满足要求2);
  • 15分:满足要求3);
  • 15分:满足要求4);
  • 15分:满足要求5)。

二.效果预览

在编程之前,先来看看作品的完整效果吧:

三.思路分析

本题使用的是Scratch默认的舞台白色背景和小猫角色,如图所示:

图片[5]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课

本题是一个典型的IPO模式编程,所谓的IPO是指输入-处理-输出,详细的介绍可以参考《数字与图形-第13届蓝桥杯Scratch国赛真题第5题》

输入、处理和输出的过程相对比较简单,其流程如图所示:

图片[6]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课

这里的重点是如何求逆序数,原理其实比较简单,就是从最后一个数字开始往前挨个取出数字,进行重新连接,具体的过程,可以用流程图描述如下:

图片[7]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课

有了流程图,我们就可以很轻松地来编写代码了。

四.编程实现

根据上面的思路分析,我们可以分3步来编写程序:

  • 创建变量
  • 完成主体逻辑
  • 得到逆序数

1). 创建变量

根据前面的思路分析,本题需要使用3个变量,分别是“输入数字”、“逆序数”和“i”,先创建好变量,如图所示:

图片[8]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课

这里的变量使用全局变量即可,其中,输入数字是指用户通过键盘输入的数字,逆序数就是最终要得到的数字,而i则是计数器,用于表示当前是第几个数字。

2). 完成主体逻辑

接下来,我们就可以编写程序的主体逻辑了,根据上面的第一个流程图,在小猫角色中编写代码如下:

图片[9]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课

代码也比较好理解,简要说明两点:

①. 要确保数字在10到999之间(包括10和999),用数学来描述就是“10 ≤  输入数字 ≤ 999”,但是Scratch中没有这种连写方式,需要拆分成两个条件,然后使用逻辑运算进行合并。这里拆分成了“输入数字 < 10”和”输入数字 > 999″,然后使用逻辑或连接,表示的是不成立的情况。

②. 否则指令目前是空的,具体实现请看第3步。

3). 得到逆序数

重点来了,如果数字在10到999范围内,就需要获取它的逆序数了,如果将数字当作字符串来看的话,其实就是如何使用Scratch来操作字符串了。

在Scratch中,和字符串相关的运算指令有如下几个:

图片[10]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课

在本题中,我们需要用到前面3个指令,需要注意的是第一个指令“连接苹果和香蕉”。如果使用变量逐个来连接字符,该变量的初始值需要设置为空,而不是0,所谓空,就是去掉圆圈中的内容,什么都不用写,如图所示:

图片[11]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课

我们要得到逆序数,那就应该从后面往前面挨个取出字符,因此,需要先将i设置为“输入数字的字符数”,如果有两个数字,i就是2,如果有3个数字,i就是3。接着就是循环将取出的字符进行连接即可,每连接一个字符,就将i减1,直到i=0,结束循环,具体的代码如图所示:

图片[12]-scratch求逆序数_第12届蓝桥杯省赛教程-超平的编程课

将这段代码放到前面的“否则”指令里面即可。

五.总结与思考

本题难度系数为2,一共31个积木块,分值为60,涉及到的知识点主要包括:

  • Scratch问答模块,包括询问并等待和回答指令;
  • 变量的使用;
  • 字符串操作及字符串运算指令的灵活运用;
  • 循环编程,这里用到的是重复直到循环;
  • 比较运算符和逻辑运算符的组合使用;
  • IPO模式的理解与应用。

总体来说,这是一道简单的题目,解决题目的核心是Scratch字符串操作,通常需要结合循环和变量逐个取出字符,进行相应的处理。

字符串处理在高级语言编程中(比如Python、C++、Java等)十分常见,也是非常重要的。相对来说,在Scratch图形化编程中,字符串的功能并不强大,只需要熟练掌握好前面提到的4个指令即可。


需要素材和源代码的,可以转到这里,求逆序数-2021.4.24蓝桥杯省赛第3题

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容