欢迎光临散文网 会员登陆 & 注册

四季教育编程STEAM科普:这些蓝桥杯易错题我赌你会做错!

2023-06-15 13:51 作者:四季教育EDU  | 我要投稿

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



【参考答案】



看完易错题还是不理解如何解析题目



做出正确答案?


四季教育编程STEAM科普:这些蓝桥杯易错题我赌你会做错!的评论 (共 条)

分享到微博请遵守国家法律