四季教育编程STEAM科普:这些蓝桥杯易错题我赌你会做错!
Scratch
【消除字母】:
具体要求:
(1)点击绿旗,角色、背景如图所示:
(创建一个字母表,并存入26个字母)

(2) 等待1秒,阿拉蕾说:“请输入一个字母”,舞台下方出现询问框;

(3)当在询问框中输入一个字母表中存在的字母,等待1秒,阿拉蕾将此字母和它的前两项与后两项字母说出,然后从字母表中删除这五个字母;
(列表第一项的前一项是列表的最后一项,列表最后一项的后一项是第一项)
例如:输入C,阿拉蕾说:“删除ABCDE”后,列表中的这五个字母删除

例如:输入F,阿拉蕾说:“删除YZFGH”后,列表中的这五个字母删除

(4)当询问框中输入一个字母表中不存在的字母后,阿拉蕾说:“输入错误”;

(5)重复执行2)3)4)步骤,当字母表中的字母不足5个时,程序结束。
【答案解析】:
1. 初始化字母表
先创建一个列表,将其命名为字母表,再创建一个变量[gf]2022[/gf]宇母,将其初始值没设置为-ABCDEFCHUKLMNCPORSTUWXYZ,然后使用循环,将每个字符依次取出并存到列表中。

2.查找连续5个字母
根据前面的思路分析,当输入一个字母表中的字母时,先搜索该字母的前两位,将其保存到临时列表中。在向前查找的时候,有可能刚好是列表的第一项,此时需要将其设置为列表的最后一项,这部分的代码如下:

然后,我们将当前项对应的字母加入到临时列表中,代码如下:

同理,在查找下一项的时候,有可能是列表的最后一项,此时需要将其设置为列表的第一项,其代码如下:

如此一来,我们就可以找到要删除的5个字母了,不过需要注意它们的顺序,比如输入字母C,执行上述代码,临时列表中的字母为:

实际上,此时阿拉蕾说的是“删除ABCDE”,所以在说话的时候,需要将前面两个字符的顺序对调一下,代码如下:

代码比较简单,说明两点:
1).此处使用了交换算法,需要借助一个临时变量;
2).在Scratch中,列表作为整体使用的时候,是将列表中的每一项连接起来,因此我们也就不需要再循环.逐个取出每个字母进行连接操作了;
将上述代码组合起来,并作为一个新的自制积木,代码如下:

如此一来,需要删除的5个字母就已经找到并存入到临时列表了。
3. 删除字母
有了临时列表,删除字母的逻辑就非常简单了,每次取出临时列表中的第一项,再到字母表中找到该字母的编号,将其删除即可,同时将临时列表中的第一项删除即可。
将这个操作重复5次即可,对应的代码如下:

根据题目的要求,使用上面的自制积木和核心代码,编写主程序如下:

Python
【题目描述】:
(注.input()输入函数的括号中不允许添加任何信息)
1.编程实现:
在一个神奇空间里有N个房间,房间从1到N编号,每个房间可能有一个或多个传送门,每个传送门都有一个编号,如果相同编号的传送门同时出现在多个房间中,表示这些房间可以互通。
给定两个房间的编号A和B,请找出从房间A到达房间B最少需要经过几个传送门。
例如:N=3,3个房间中传送门的编号分别为:
房间1:1、 4、6;
房间2:2、3、4、8;
房间3:3、6、9。
其中房间1和房间2互通,共用4号传送门;房间1和房间3互通,共用6号传送门;房间2和房间3互通,共用3号传送门;当A=1,B=2, 从房间1到达房间。
2.共有两种路线:
路线1:从房间1通过4号传送门进入房间2,共经过1个传送门;
路线2:从房间1通过6号传送门进入房间3,再从房间3通过3号传送门进入房间2,共经过2个传送门;故从房间1到达房间2最少需要经过1个传送门。
输入描述
第一行输入一个正整数N(2<n<20),表示房间数量< span="">
接下来输入N行,每行包含多个正整数(1≤正整数≤100),第2行到第N+1行依次表示1到N号房间内所有传送门的编号,正整数之间以一个英文逗号隔开最后一行输入两个正整数A和B (1≤AN,1≤BN,且A+B),表示两个房间的编号,正整数之间以一个英文逗号隔开
输出描述
输出一个整数,表示从房间A到达房间B最少需要经过几个传送门,如果房间A不能到达房间B,则输出-1
样例输入
3
1,4,6
2,3,4,8
3,6,9
1,2
样例输出
1
【参考答案】:

C++
【数字游戏】
老师给出了一组数,要求小蓝对这组数进行调整,调整的规则如下:
1. 第1次,从这组数中选出一个最小的数,把它调整为和第二小的数一样大;
2. 第2次,再从这组数中选出一个最大的数,把它调整为和第二大的数一样大;
3. 重复执行1、2步骤;
4. 当这组数中所包含的不同的数少于3个时,结束调整。
现在给定了一组数,请帮小蓝编写程序计算出总共的调整次数,以及调整结束时这组数中的最小数和最大数。
例1:当这组数是2 2 2 2时,这组数中所包含的不同的数少于3个(只有2这一种数),无需调整,最后输出:0 2 2
例2:当这组数是1 3 4 2时,调整过程如下:
1. 先将这组数中最小的数1,改成2,这组数变为:2 3 4 2
2. 再将这组数中最大的数4,改成3,这组数变为:2 3 3 2
这时,这组数中只包含2、3两个数了,满足规则4,调整结束,总共调整了2次,故最后输出:2 2 3
输入描述
第一行输入一个正整数N(3≤N≤1000000),表示这组数中数的个数
第二行输入N个正整数(1≤正整数≤1000000),正整数之间用一个空格隔开
输出描述
输出一行,包含三个整数,分别是总的调整次数、调整结束时的最小值和最大值,整数之间用一个空格隔开
样例输入
1 3 4 2
样例输出
2 2 3
【参考答案】

看完易错题还是不理解如何解析题目
做出正确答案?