列表排序-第10届蓝桥杯Scratch省赛真题第6题

[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第63讲。

第10届蓝桥杯青少年组省赛于2019年3月24日举行,形式为线下考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

列表排序,本题是第10届蓝桥杯Scratch省赛真题编程第6题,是初级组最后一题,中级组也有此题,题目要求考生使用Scratch编程对列表排序,在列表 1 中生成 5 个在 1~99 范围内的随机整数,然后按照从大到小的顺序将它们依次移到列表 2 中。

先来看看题目的要求吧。

一.题目说明

编程实现:

老师给小猫出了一道题:在列表 1 中生成 5 个在 1~99 范围内的随机整数,然后按照从大到小的顺序将它们依次移到列表 2 中。

例如:在列表 1 中随机生成的整数依次是“12,3,1,13,17”,在处理之后列表 2 中的整数依次是“17,13,12,3,1”。

具体要求:

1、每次点击绿旗后,在屏幕中都显示如图-1 所示的列表 1 和列表 2,且在列表 1 中随机生成 5 个在 1~99范围内的随机整数,而列表 2 中内容为空。然后小猫说“5 秒钟后开始处理”,并等待 5 秒钟;

2、处理数据时,每间隔 1 秒钟,都将列表 1 中当前最大的一个数字移动到列表 2 中,注意:是移动,不是复制;

3、当处理到列表 1 为空后,列表 2 中的数据应从大到小排列,如图-2 所示,然后小猫说“处理完啦。”2秒钟,然后程序结束。

将程序保存到桌面,命名为“6.sb2”。

评判标准:

  • 10 分:点击绿旗后,在列表 1 中正确生成了 5 个随机的整数(裁判可多次点击绿旗来验证是否随机)。且小猫说“5 秒钟后开始处理”,并等待 5 秒钟;

  • 30 分:在 10 分标准的基础上,开始处理后,每 1 秒钟都将列表 1 中当前最大的数字移动到列表 2 中,但不是每次都移动最大数字或者移动到列表 2 中后顺序不是从大到小,或者处理完成后小猫没有说“处理完啦。”2 秒钟;

  • 50 分:完全符合题意。

二.思路分析

这是一道纯算法题,针对列表1中的5个数据,每一次找到最大的那个数字,将其移到列表2中,解决问题的核心在于,如何找到最大数。

最简单的方就是逐个比较,每次将列表的第一个数字作为最大数,然后从列表的第二个数字开始,逐个比较,如果比第一个数字大,则该数字为最大数字,直到所有的数字都比较完毕,这部分的流程图如下:

注意,这只是比较一轮的流程图,一轮比较完毕,max变量中保存的就是最大的那个数字,我们将max插入到列表2中,同时将列表1中等于max的数字删除,重复执行5次,就可以完成整个排序过程。

 

三.编程实现

根据题目描述和思路分析,我们可以分两步来编写程序:

  • 随机生成列表1数据

  • 依次将数据移到列表2中

1. 随机生成列表1数据

首先创建两个列表,分别命名为”列表1“和”列表2“,当绿旗被点击时,将列表清空,然后向列表1中插入5个随机数,随机数的范围在1~99之间,这部分的代码如下:

执行完这段代码,列表1中就会有5个随机数字,这时候的数字是乱序的,如图:

2. 依次将数据移到列表2中

根据前面的思路分析,我们先创建两个变量,分别命名为”max“和”i“,如图:

其中,max表示最大数字,i是循环计数器,通过i可以取出列表中的每一个数字。我们先来完成一轮比较及移动操作,根据流程图,编写代码如下:

将最大数字加入到列表2中比较简单,值得注意的是如何从列表1中删除最大数。此处使用了组合指令,其中一个指令是”列表中的第一个xx的编号“,通过该指令,我们就可以找到最大数对应的编号,有了编号,删除列表项就非常简单了,只需要使用指令”删除列表的第x项“即可。

还有一点需要说明,由于max是列表的第1项,所以我们是从第2项开始比较,所以i的初始值设为了2,总的比较次数也减少一次,即”列表1的项目数 - 1“次。

列表一共有5个数字,所以,我们需要把这个比较重复5次,每次间隔1秒,排序完毕,说一句”处理完啦!“,代码如下:

将这段代码和第一步中的代码连起来,整个程序就完成了。

四.总结与思考

本题难度系数为5,积木块数量在30个左右,涉及到的知识点主要包括:

  • 列表的操作,包括清空、插入、查找编号、删除指定项等;

  • 结合循环和变量遍历列表,注意计数器的概念;

  • 随机数指令的使用;

  • 循环嵌套;

  • 选择排序的算法思想。

作为一道纯算法题,本题的难度不小,实际上,这是算法中经典的选择排序的简化版本。之所以说是简化版本,是因为这里使用了两个列表,每次找到列表1中最大的那个数,然后移到列表2中。如果只有一个列表,要将列表中的随机数据按照从大到小或者从小到大的顺序依次排列,这就是经典的选择排序了,你知道如何实现吗,要不要挑战一下^_^。

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

需要素材和源码的,可以联系本人,或者移步至同名wx号。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蓝桥杯scratch省赛真题是指蓝桥杯编程大赛中使用Scratch编程语言进行的省级比赛的问。具体的目会根据每年的比赛而有所不同,以下是一个例子: 目要求创建一个游戏,模拟猴子爬楼梯的场景。猴子每次可以爬1到3级的楼梯,目标是爬到楼梯的最顶层。玩家可以通过按键来让猴子爬楼梯,同时需要显示猴子当前所在的楼梯层数以及已经爬过的楼梯数量。 首先,我们需要使用Scratch中的精灵功能来创建一个猴子的角色,可以自定义猴子的造型和动作。接下来,我们需要创建一个楼梯场景,可以使用Scratch中的背景功能来绘制楼梯。可以使用简单的图形表示楼梯,比如长方形。 之后,我们需要添加按键事件,让玩家输入按键来控制猴子的爬楼梯动作。可以使用Scratch中的事件功能来实现按键事件的触发。当玩家按下某个按键时,猴子开始向上爬楼梯。可以使用Scratch中的运动功能来控制猴子的位置,让其向上移动相应的楼梯层数。 同时,我们需要计算猴子当前所在的楼梯层数和已经爬过的楼梯数量。可以使用Scratch中的变量功能来记录这些信息。当猴子爬上一级楼梯时,楼梯层数加一,已经爬过的楼梯数量也加一。可以使用Scratch中的运算功能来实现变量的加法操作。 最后,我们需要添加判断条件,当猴子爬到楼梯的最顶层时游戏结束。可以使用Scratch中的控制功能来实现判断条件。当猴子的位置达到最顶层时,显示游戏结束的提示信息,并停止猴子的爬楼梯动作。 通过以上步骤,我们可以完成蓝桥杯scratch省赛真题中的猴子爬楼梯游戏。这个例子中只是其中的一个目,实际比赛中的问会更加复杂和多样化。但无论目怎样,我们都可以通过使用Scratch的各种功能和编程思维,去解决这些问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值