【真题回顾•第十期】2020年07月浙江省信息技术选考真题Python改编

四季读书网 2 0
【真题回顾•第十期】2020年07月浙江省信息技术选考真题Python改编

【真题回顾•第十期】2020年07月浙江省信息技术选考真题Python改编

本公众号推出真题回顾系列,将VB题目进行了Python改编,并在最后附上对于目前选考备考来说,还有价值的其它题目。

改编过程中:感慨万千。大概只有我们信息技术学科,在短短十年间,变化如此之大。

信息技术教师必须具备两种学习意识:对于底层知识,需要“慢思考”,沉下心去啃硬骨头,建立深刻的理解,这可能需要几年甚至十几年的积累。对于应用层知识,需要“快学习”,快速上手,快速迭代,甚至要有“用完即弃”的觉悟。这种精神上的分裂和持续的压力,是其他学科教师难以体会的。

也因此,浙江技术选考造就了一大批优秀的信息科技教师。

今天是第十期,看看我们的来时路。

一、选择题第9题:字符串遍历

【2020年7月原题】9.有如下VB程序段:

s1 = "1324": s2 = "abcdefgh"j = 1: m = 0: c = ""For i = 1 To Len(s2)k = Val(Mid(s1, j, 1))c = c + Mid(s2, m + k, 1)j = j + 1If j > 4 Then j = 1: m = m + 4Next i

【Python版】有如下Python程序段:

s1 ="1324"s2 ="abcdefgh"=0=0=""for i inrange(len(s2)):=int(s1[j])+= s2[m + k -1]+=1if j >=4:=0+=4print(c)

执行该程序段后,变量 c 的值是( )            A. "acbdegfh"B. "acbdacbd"C. "acbdefgh"D. "abcdefgh"

【答案】A

二、选择题第10题:双指针擂台

【2020年7月原题】10.下列VB程序段功能为:在文本框Text中显示整型数组元素a(1)到a(9)中的最小值和最大值。

amin = a(1) : amax = a(1)i=2:j=9Do While i<= jIf a(i)>a(j) Then(1)(2)Else(3)(4)End Ifi=i+1:j=j-1LoopText1.Text= Str(amin) +", " + Str(amax)

上述程序段中方框处可选语句为:              1 If a(j) > amax Then amax =a(j)              2 If a(j)3 If a(i)4 If a(i)>amax Then amax =a(i)         则(1)(2)(3)(4)处语句依次可为( )         A.4321 B.4231 C.3241 D.3142

【Python版】下列Python程序段功能为:显示整型数组元素a[0]到a[8]中的最小值和最大值。

# 数组a[0]~a[8]对应VB中a(1)~a(9)= [528193746]amin = a[0]amax = a[0]=1=8while i <= j:if a[i] > a[j]:# (1)# (2)else:# (3)# (4)+=1-=1print(amin, amax)

(1)if a[j] > amax:amax = a[j]              (2)if a[j] < amin:amin = a[j]              (3)if a[i] < amin:amin = a[i]              (4)if a[i] > amax:amax = a[i]

则(1)(2)(3)(4)处语句依次可为( )              A.4321 B.4231 C.3241 D.3142

【解析】a[i]>a[j]时,先更新a[i]为最大值(4),再更新a[j]为最小值(2);否则先更新a[i]为最小值(3),再更新a[j]为最大值(1),顺序为4231,选B

三、选择题第11题:二分查找

【2020年7月原题】某对分查找算法的VB程序段如下:

'数组元素f(1)到f(9)赋初值为0,代码略Key = Val(Text1.Text) :i =1:j=9Do While i<= jm=(i+j)\2f(m)=1If a(m)= Key Then Exit DoIf a(m) > Key Then j = m-1 Else i= m +1Loop

整型数组元素a(1)到a(9)为升序序列,执行该程序段后,f(1)到f(9)各元素值不可能的是( )              A. 1,1,0,0,1,0,0,0,0 B. 0,0,0,0,1,0,0,0,0              C. 0,0,0,0,1,1,1,1,0 D. 0,1,1,1,1,0,0,0,0

【Python版】某对分查找算法的Python程序段如下:

= [1,3,5,7,9,11,13,15,17]= [0]*9key =int(input())=0=8while i <= j:= (i + j) //2f[m] =1if a[m] == key:breakif a[m] > key:= m -1else:= m +1print(f)

执行后,f数组各元素值不可能的是( )              A.1,1,0,0,1,0,0,0,0 B.0,0,0,0,1,0,0,0,0              C.0,0,0,0,1,1,1,1,0 D.0,1,1,1,1,0,0,0,0

【解析】对分查找只会连续向单侧缩小区间,不会出现右侧连续4个位置都标记为1的情况,选项C不可能,选C

四、选择题第12题:冒泡排序

【2020年7月原题】有如下VB程序段:

'生成6个随机正整数,依次存入数组元素a(1)到a(6),代码略For i = 1 To 2For j = 6 To i +1 Step -1If a(j) Mod 3 >a(j - 1) Mod 3 Thent = a(j): a(j) =a(j -1): a(j -1) =tEnd IfNext jNext i

执行上述程序段后,下列选项中,a(1)到a(6)各元素值不可能的是( )              A. 2,1,4,3,6,7 B. 5,2,1,7,8,3 C.7,7,6,3,3,1 D. 8,7,4,3,3,2

【Python版】有如下Python程序段:

# 生成6个随机正整数存入a[0]~a[5]import random= [random.randint(1,10for _ inrange(6)]for i inrange(2):for j inrange(5, i, -1):if a[j] %3> a[j-1%3:a[j], a[j-1= a[j-1], a[j]print(a)

执行后,a数组元素值不可能的是( )              A.2,1,4,3,6,7 B.5,2,1,7,8,3 C.7,7,6,3,3,1 D.8,7,4,3,3,2

【解析】程序仅进行2轮冒泡,按%3降序交换,选项D的%3序列不符合2轮排序结果,选D

五、非选择题第15题:贪心+排序

【2020年7月原题】某校为学生期末考试分配考场,准考证号格式为“入学年份+班号+班内序号”,每个考场30个座位,连续分配的学生不同班。选择班级按未分配人数降序,若与上次同班则选第2个,分配后维护班级序列。              (1)有Caption属性的对象是______(A.Command1 B.Text1 C.List1)              (2)完善VB程序划线处代码 (3)改正加框处错误。

【真题回顾•第十期】2020年07月浙江省信息技术选考真题Python改编 第1张

【Python版】某校为学生期末考试分配考场,并编制准考证号。每个班级有班号,每位学生有班内序号,班内序号是按班级现有人数从 1 开始逐个编排的。准考证号格式为“入学年份+班号+班内序号”。每个考场有 30 个座位,座位号从 1 开始。连续分配座位的两个学生不属于同一个班级。分配方法是:按考场号递增、同一考场座位号递增的顺序逐一分配座位。每次分配,先选班级,再选学生。选择班级时,在班级降序序列(按未分配人数)中选择第 1 个班级,但如果该班和前一次分配选定的班级相同,则改选第 2 个班级。选定班级后,再为该班未分配学生中序号最大的学生分配考场座位,并维护班级降序序列(按未分配人数)。程序运行如下图(每一行分别是:准考证号 考场号 座位号):

【真题回顾•第十期】2020年07月浙江省信息技术选考真题Python改编 第2张

实现上述功能的Python程序如下。              (1)完善划线处代码

(2)改正加框处错误

="2018"# 入学年份cla = ["01""02""04""03"]# 班号num = [40393333]# 各班未分配人数=len(cla)room =1# 考场号seat =1# 座位号choice =0# 上次选择的班号def fm(k):# 不足两位补0returnf"{k:02d}"def allocate():global room, seat, choice___①___while f:if cla[0!= choice:=0else:=1choice = cla[m]print(f"{y}{fm(cla[m])}{fm(num[m])}{fm(room)}{fm(seat)}")seat +=1if seat >30:seat =1room =1# (2)加框处:room = 1num[m] -=1# 维护班级降序___②___while i < n-1:if num[i] < num[i+1]:num[i], num[i+1= num[i+1], num[i]cla[i], cla[i+1= cla[i+1], cla[i]+=1else:breakif ___③___:=Falseallocate()

【答案】(1) ① f = True ② i = m ③ num[0] == 0(2) 改正:room = room + 1

六、非选择题第16题:模拟算法

【2020年7月原题】根据A、B城温度数据计算温差,A城记录为(温度,截止时间),B城记录为(温度,持续时长),结果为(温差,持续时长)。              (1)修改A城数据后,第1个记录持续时长为______              (2)完善VB程序划线处代码

【Python版】编写 Python 程序,功能是根据 A 城和 B 城同一时间段内的温度数据,计算两城温差(A 城温度—B 城温度)。A 城数据和 B 城数据分别为包含若干个记录的序列,其中,A 城每个记录包含温度及其截止时间,B 城每个记录包含温度及其持续时长。两城温差计算结果表示为若干个记录的序列,每个记录包含温差及其持续时长。持续时长是指同一温度(或温差)保持不变的最大时长。示例见下表。

【真题回顾•第十期】2020年07月浙江省信息技术选考真题Python改编 第3张

表中,A 城数据有 4 个记录,其中第 1 个记录为(温度 30,截止时间 2),第 2 个记录为(温度 33,截止时间 4),这表明从开始到第 2 小时的温度都是 30,此后到第 4 小时的温度都是 33。B 城数据有 4 个记录,其中第 3 个记录为(温度 21,持续时长 2),这表明第 5、第 6 这 2 个小时的温度都是 21。两城温差计算结果的第 4 个记录为(温差 10,持续时长 3),这表明第 5 第 6、第 7 这 3 个小时的温差都是 10。程序运行如下图:

【真题回顾•第十期】2020年07月浙江省信息技术选考真题Python改编 第4张

(1)若将示例中 A 城数据修改为 3 个记录,依次是(温度 30,截止时间 4)、(温度 31,截止时间 6)、(温度 32,截止时间 7),B 城数据不变,则两城温差计算结果中第 1 个记录为(温差 10,持续时长______________)(填数值)。(2)实现上述功能的Python程序如下,请在划线处填入合适的代码。

=1000= [0]*m# 温差= [0]*m# 温差持续时长na =4# A城记录数nb =4# B城记录数# 模拟数据ha = [30,33,31,32]ta = [2,4,6,7]hb = [20,22,21,22]tb = [3,1,2,1]for i inrange(1, nb):tb[i] = ___①___=0;j =0;n =0;p0 =0while i < na and j < nb:diff = ha[i] - hb[j]p1 = ta[i]# ② 判断A城截止时间更早if ___②___:+=1if p1 >= tb[j]:p1 = tb[j]+=1if n ==0or diff != h[n-1]:+=1h[n-1= difft[n-1= p1 - p0else:___③___p0 = p1# 输出结果for idx inrange(n):print(f"温差:{h[idx]},持续时长:{t[idx]}")

【答案】(1) 3(2) ① tb[i] + tb[i-1] ② ta[i] <= tb[j] ③ t[n-1] += p1 - p0

七、其他有价值的题目

4.下列十六进制数中,转换为二进制数后含有奇数个“1”的是( )

A. F082 B. EA30 C. A906 D. F311

【答案】:B

抱歉,评论功能暂时关闭!