本公众号推出真题回顾系列,将VB题目进行了Python改编,并在最后附上对于目前选考备考来说,还有价值的其它题目。
改编过程中:感慨万千。大概只有我们信息技术学科,在短短十年间,变化如此之大。
信息技术教师必须具备两种学习意识:对于底层知识,需要“慢思考”,沉下心去啃硬骨头,建立深刻的理解,这可能需要几年甚至十几年的积累。对于应用层知识,需要“快学习”,快速上手,快速迭代,甚至要有“用完即弃”的觉悟。这种精神上的分裂和持续的压力,是其他学科教师难以体会的。
也因此,浙江技术选考造就了一大批优秀的信息科技教师。
今天是第九期,看看我们的来时路。
一、选择题第10题:擂台+累加
【2020年1月原题】10.有如下VB程序段:
m=a(1):s=0For i=2 To 5If a(i)>m Then m=a(i)s=s+mNext i
数组元素a(1)到a(5)的值依次为“1,3,4,2,3”,执行该程序段后,变量s的值为( ) A.7 B.12 C.13 D.15
【Python版】有如下Python程序段:
a = [1, 3, 4, 2, 3]n =len(a)m = a[0]s =0for i inrange(1, n):if a[i] > m:m = a[i]s = s + mprint(s)
该程序段运行后,输出的值为( ) A.7 B.12 C.13 D.15
【解析】初始m=1,s=0 i=2,a[2]=3>1→m=3,s=3 i=3,a[3]=4>3→m=4,s=7 i=4,a[4]=2<4→m不变,s=11 i=5,a[5]=3<4→m不变,s=15 最终s=15,选D。
二、选择题第11题:字符串判等
【2020年1月原题】11.有两个以字母结尾的字符串s1和s2,在忽略字符串中空格的前提下判断它们是否相同。 实现该功能的VB程序段如下:
i=1:j=1Do While i<Len(s1) And j<Len(s2)If Mid(s1,i,1)=Mid(s2,j,1)Theni=i+1:j=j+1Else①②③End IfLoopIf i>Len(s1) And j>Len(s2) Then Text1.Text="相同"Else Text1.Text="不相同"
方框中的代码由以下三部分组成: ①If Mid(s1,i,1)=" " Then i=i+1 ②If Mid(s2,j,1)=" " Then j=j+1 ③If Mid(s1,i,1)<>" " And Mid(s2,j,1)<>" " Then Exit Do 代码顺序正确的是( ) A.①②③ B.②①③ C.②③① D.③②①
【Python版】有两个以字母结尾的字符串s1和s2,在忽略字符串中空格的前提下判断它们是否相同。实现该功能的Python程序段如下:
i =0j =0len1 =len(s1)len2 =len(s2)while i < len1 and j < len2:if s1[i] == s2[j]:i +=1j +=1else:___①______②______③___if i >= len1 and j >= len2:print("相同")else:print("不相同")
方框中的代码由以下三部分组成: ①if s1[i] == " ": i += 1 ②if s2[j] == " ": j += 1 ③if s1[i] != " " and s2[j] != " ": break 代码顺序正确的是( ) A.①②③ B.②①③ C.②③① D.③②①
【解析】逻辑:else分支为不相等的情况,先判断是否都不为空格,如果是,则直接退出,如果否,说明有一个是空格,再判断s2当前字符是否为空格(②)和s1当前字符是否为空格(①)所以顺序为③②①,或者③①②,答案选D。
三、选择题第12题:二分查找
【2020年1月原题】某对分查找算法的VB程序段如下:
key=Val(Text1.Text)s=""i=1:j=10Do While i<=jm=(i+j)\2s=s+Str(a(m))If a(m)>key Then j=m-1 Else i=m+1LoopText2.Text=s
数组元素a(1)到a(10)的值依次为“2,3,5,8,9,10,13,17,19,20”。输入待查找数后,文本框显示内容可能的是( ) A.9 3 B.9 3 5 C.9 17 19 13 D.9 3 5 8 19
【Python版】某对分查找算法的Python程序段如下:
a = [2, 3, 5, 8, 9, 10, 13, 17, 19, 20]key =int(input())s =""i =0j =9while i <= j:m = (i + j) //2s +=str(a[m]) +" "if a[m] > key:j = m -1else:i = m +1print(s)
输入待查找数后,程序输出内容可能的是( ) A.9 3 B.9 3 5 C.9 17 19 13 D.9 3 5 8 19
【解析】选B。
四、非选择题第15题:数组操作
【2020年1月原题】15.甲乙双方进行一场球类比赛,一局计分规则:赢1球得1分(“1”),输1球失1分(“0”);任一方得分≥6分且领先≥2分则赢一局。小王记录甲选手比赛数据,错误在连续多个“0”的最后一个,编写VB程序找出错误并统计比分。(1)有Text属性的对象是______(A.Command1 B.Form1 C.Text1) (2)完善VB程序划线处代码 (3)改正加框处错误
100000111010101010010101010101011

【Python版】甲乙双方进行一场球类比赛,一局计分规则:赢1球得1分(“1”),输1球失1分(“0”);任一方得分≥6分且领先≥2分则赢一局。小王记录甲选手比赛数据,错误在连续多个“0”的最后一个,编写Python程序实现:输入比赛字符串,找出错误,并输出修改位置及修改后的每局比分。程序执行如图:

(1)完善Python程序划线处代码
(2)改正加框处错误
s =input("请输入比赛记录数据:")#s = "1000001111010101010010101010101011"n =len(s)a = [0] *51e = [0] *21m =0# 字符串转数字数组for i inrange(n):a[i] =int(___①___)i =0# 查找疑似错误位置while i < n:k = iwhile i < n and a[i] ==0:i +=1if___②___:e[m] = i -1m +=1i +=1# 逐个修改并统计比分for i inrange(m):f1 =0f2 =0k = e[i]a[k] =1sp ="修改位置及比分:"+str(k)for j inrange(n):if a[j] ==1:f1 +=1else:f2 +=1if f1 >=6or f2 >=6andabs(f1 - f2) >=2:# 加框处:f1 >= 6 or f2 >= 6 and abs(f1 - f2) >= 2sp +=f"/{f1}:{f2}"f1 = f2 =0if f1 + f2 >0:sp +=f"/{f1}:{f2}"print(sp)___③___
【答案】(2) ① s[i] ② i - k > 1(或i - k >= 2) ③ a[k] = 0(3) 改正:(f1 >= 6 or f2 >= 6) and abs(f1 - f2) >= 2
五、非选择题第16题:排序优化
【2020年1月原题】16.志愿者数据整理规则:先按城市序号升序,同城市按服务次数降序。编写VB程序实现排序输出。 (1)q(1~200)分10段、每段20个元素,选择排序总比较次数是______(A.200×199/2 B.10×20×19/2 C.20×10×9/2) (2)完善VB程序划线处代码

【Python版】某省举办大型活动,面向省内城市招募有志愿服务工作经历的志愿者,每个志愿者的报名数据包含城市序号、姓名(字母缩写)和参加志愿服务的次数。现需整理报名数据,要求是:先按城市序号从小到大排列;然后,同一城市的志愿者按参加志愿服务的次数从多到少排列。Python程序实现排序如图:

(1)q[1~200]分10段、每段20个元素,选择排序总比较次数是______(A.200×199/2 B.10×20×19/2 C.20×10×9/2) (2)完善Python程序划线处代码
nc =4# 城市数(对应城市序号:1、2、3、4)city = [1, 3, 1, 2, 3, 1, 4, 2, 3, 1, 4, 2, 3, 1, 4, 2]pname = ["SHP", "ABC", "DEF", "GHI", "JKL", "MNO", "PQR", "STU", "VWX", "YZA", "BCD", "EFG", "HIJ", "KLM", "NOP", "QRS"]times = [3, 12, 25, 18, 3, 30, 14, 22, 17, 10, 19, 11, 23, 21, 16, 9]n =len(pname)# 总人数b = [0] * nc# 各城市人数(索引0=城市1,1=城市2,2=城市3,3=城市4)c = [0] * nc# 每个城市在 q 数组中的起始索引q = [0] * n# 存储排序后的人员索引def fp(head, tail):k = headfor i inrange(___①___):if times[q[i]] > times[q[k]]:k = ireturn kdef sort_data():for i inrange(nc):b[i] =0for i inrange(n):___②___b[k] +=1c[0] =0for i inrange(1, nc):c[i] = c[i-1] + b[i-1]for i inrange(n):k = city[i] -1___②___c[k] +=1pos =0for i inrange(nc):if b[i] ==0:pos += b[i]continuefor j inrange(pos, pos + b[i] -1):k = fp(j, pos + b[i] -1)q[j], q[k] = q[k], q[j]pos += b[i]print("城市序号", "姓名", "服务次数")for i inrange(n):print(city[q[i]],"", pname[q[i]],"", times[q[i]])# 执行排序sort_data()
【答案】(1) 选择排序单轮比较次数为n(n-1)/2,10段每段20个元素,总比较次数10×20×19/2,选B(2) ①head + 1, tail + 1 ②k = city[i] - 1 ③ q[c[k]] = i
六、其他有价值的题目
2.下列应用中,目前运用人工智能技术不能实现的是( )
A.模拟人脑的全部智能 B.辅助医生进行病情诊断
C.提供网络购物的语音客服 D.识别手写的文字
答案:A
9.采用冒泡排序算法对数据序列“2,3,4,5,1,0”完成升序排序,则需要交换的次数为( )
A.9次 B.12次 C.15次 D.18次
答案:A
更多文章:
一:真题回顾系列:
【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编
【真题回顾•第二期】2016年04月浙江省信息技术选考真题Python改编
【真题回顾•第三期】2016年10月浙江省信息技术选考真题Python改编
【真题回顾•第四期】2017年04月浙江省信息技术选考真题Python改编
【真题回顾•第五期】2017年11月浙江省信息技术选考真题Python改编
【真题回顾•第六期】2018年04月浙江省信息技术选考真题Python改编
【真题回顾•第七期】2018年11月浙江省信息技术选考真题Python改编
二:2026年各地联盟压轴题详细图示解析:
三:近7次新教材压轴题图示解析: