Scratch | 压轴题列表操作——蓝桥杯竞赛试题详细解析

第六题(难度系数5)

编程实现:

老师给小猫出了一道题:在列表 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

秒钟,然后程序结束。

本题测试知识点

本题主要考查列表的相关操作,包括列表的遍历、增加、删除等基本操作;同时考查一个基本的比较大小的算法。只要上课时能够完成平时的作业,解决本题基本没有障碍!

解题步骤

前置准备:

1、创建2个列表遍历,分别存储生成的5个列表项

2、创建3个普通变量:最大数用来存储列表中的最大数;索引用来存储最大数的索引值,之后删除要用到;变量i临时变量,用于取出列表第i项,与最大数进行比较用

编程实现:

首先在列表 1 中生成 5 个在 1~99 范围内的随机整数,代码如下:

代码很简答,主要执行一个循环5次,每次将1~99之间的一个随机数加入到列表1中,这里无需多加解释。

本题主要的算法逻辑在接下来的代码中:

1.首先,等待5秒后,执行一个外层循环,循环次数为列表1的长度,即5次;

2.第二步,在循环体内,每次循环都进行一些初始化操作,将变量索引、零时变量i设置为1,每次假设列表1中的第一项都是这个类表中的最大的数。

3.第三步,这个循环中,最主要的算法找出列表中最大的数,同时保存对应的索引值。

4.第四步,删除列表1索引对应的值,同时将最大数加入到列表2中。

5.重复执行,直到列表1中无数据。

将上边两段代码连接即是本题的解题源码,你也可以在公众号内回复003获得本题全部源码。

原文链接:,转发请注明来源!