回文数-第14届蓝桥杯Scratch选拔赛真题

[导读]:超平老师计划推出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). 运行程序,角色、背景如图所示:

回文数-第14届蓝桥杯Scratch选拔赛真题_第1张图片

2). 等待1秒后,小猫说: "请输入一个正整数”;

回文数-第14届蓝桥杯Scratch选拔赛真题_第2张图片

3). 如果输入数值不是正整数,小猫说: "输入错误”;

回文数-第14届蓝桥杯Scratch选拔赛真题_第3张图片

4). 当正整数为回文数字时,小猫说出此正整数1秒;

回文数-第14届蓝桥杯Scratch选拔赛真题_第4张图片

5). 如果输入数值是正整数且不为回文数时,小猫说出此正整数与它的逆序数字之和;

回文数-第14届蓝桥杯Scratch选拔赛真题_第5张图片

6). 程序持续重复2)、3)、4)、5)步骤。

二.思路分析

本题只有1个角色,就是默认的小猫,如图所示:

回文数-第14届蓝桥杯Scratch选拔赛真题_第6张图片

这是一道和数学紧密结合的算法题,玩家在输入完内容之后,程序要判断输入内容是否为正整数,如果不是,则直接提示“输入错误”,否则就判断该数字是否为回文数,如果是回文数,则直接输出该数字,否则就计算该数字及其逆序数的和并输出,基本流程如下:

回文数-第14届蓝桥杯Scratch选拔赛真题_第7张图片

针对上面的需求,我们要解决两个关键点:

  • 判断输入的内容是否为正整数

  • 求逆序数

其中,求逆序数相对简单一点,在第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个数字加入到列表中,如图所示:

回文数-第14届蓝桥杯Scratch选拔赛真题_第8张图片

接下来创建一个自制积木,将其命名为“判断正整数”,并添加一个参数“数字”,如图:

回文数-第14届蓝桥杯Scratch选拔赛真题_第9张图片

同时,需要创建两个变量,分别命名为“flag”和“i”,flag用于表示是否为正整数,它有两个取值,为1时表示是正整数,为0时表示不是正整数;i表示计数器,用于循环遍历输入的字符串。

编写自制积木的代码如下:

回文数-第14届蓝桥杯Scratch选拔赛真题_第10张图片

2. 计算逆序数

计算逆序数相对简单一些,只需要按照从尾到头的顺序来遍历字符串,逐个取出字符再依次拼接即可,创建自制积木“计算逆序数”,并编写代码如下:

回文数-第14届蓝桥杯Scratch选拔赛真题_第11张图片

需要注意的是,对于字符串连接,需要将变量的初始值设置为空字符串。计算逆序数的过程也是遍历字符串的过程,这体现了编程中的枚举算法思想。

3. 完成主程序

有了上面定义好的两个自制积木,接下来的主程序就比较简单了,只需要使用问答指令获取用户输入,然后调用自制积木即可,代码如下:

回文数-第14届蓝桥杯Scratch选拔赛真题_第12张图片

代码使用了多层嵌套,第一层是“重复执行”里面嵌套了“如果...那么...否则”,第二层是“如果...那么...否则”又嵌套了一个“如果...那么...否则”。如果没有使用自制积木的话,嵌套的层数会更深,这也充分体现了使用自制积木的好处,即简化代码结构。

四.总结与思考

本题有一定的难度,积木块数量在57个左右,涉及到的知识点主要包括:

  • 列表的使用,重点是判断某个内容是否在列表中;

  • Scratch问答指令,包括询问并等待和回答指令;

  • 字符串运算,包括获取字符串长度、获取某个字符和字符串连接;

  • 结合循环遍历字符串 ;

  • 自制积木及其参数的使用;

  • 循环和条件指令的嵌套使用。

本题以数学中的回文数作为编程背景,具有很强的趣味性,在计算逆序数的过程中,又涉及了枚举的算法思想,是一道含金量非常高的编程题。

如果你觉得文章对你有所帮助,别忘了点赞,你的鼓励是我坚持继续写下去的最大动力,Thanks♪(・ω・)ノ。

你可能感兴趣的:(蓝桥杯Scratch真题,蓝桥杯,scratch)