• 回文数-第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). 运行程序,角色、背景如图所示:

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

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

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

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

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

    二.思路分析

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

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

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

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

    • 求逆序数

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

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

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

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

    2. 计算逆序数

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

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

    3. 完成主程序

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

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

    四.总结与思考

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

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

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

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

    • 结合循环遍历字符串 ;

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

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

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

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

  • 相关阅读:
    总结vue 需要掌握的知识点
    【组成原理-存储】关于交叉存储器检测访问冲突的一种算法
    前端性能分析
    SecureCRT 使用
    浅谈SSL通配符证书优势
    重仓比特币
    styleSwin的各种bug
    SpringSecurity整合JWT
    GAMES104 作业2-ColorGrading
    「大数据-2.0」安装Hadoop和部署HDFS集群
  • 原文地址:https://blog.csdn.net/diamondwang2012/article/details/127731043