本公众号推出真题回顾系列,将VB题目进行了Python改编,并在最后附上对于目前选考备考来说,还有价值的其它题目。
改编过程中:感慨万千。大概只有我们信息技术学科,在短短十年间,变化如此之大。
信息技术教师必须具备两种学习意识:对于底层知识,需要“慢思考”,沉下心去啃硬骨头,建立深刻的理解,这可能需要几年甚至十几年的积累。对于应用层知识,需要“快学习”,快速上手,快速迭代,甚至要有“用完即弃”的觉悟。这种精神上的分裂和持续的压力,是其他学科教师难以体会的。
也因此,浙江技术选考造就了一大批优秀的信息科技教师。
今天是第三期,看看我们的来时路。
一、选择题第11题:对称字符串
【2016年10月原题】11.(加试题)对称字符串的特征是从左到右读和从右到左读完全一样的。如“abba”是对称的,“abcba”也是对称的。判断字符串是否对称的VB程序段如下:
N=Len(s)K=0:j=nFor i = 1 Ton/2'加框处Next iIf k = 0 Then Label1.Caption ="对称"Else Label1.Caption= "不对称"
方框中的代码由以下三部分组成: ① j = j - 1 ② If c1 <> c2 Then k = k + 1 ③ c1= Mid(s,i,1) : c2 = Mid(s,j,1) 代码顺序正确的选项是() A.①③② B.②③① C. ③②① D.②①③
【Python版】对称字符串的特征是从左到右读和从右到左读完全一样的。如“abba”是对称的,“abcba”也是对称的。判断字符串是否对称的Python程序段如下:
s =input()n =len(s)k =0j = n -1for i inrange(n //2):# 加框处if k ==0:print("对称")else:print("不对称")
方框中的代码由以下三部分组成: ① j = j - 1 ② if c1 != c2: k += 1 ③ c1 = s[i]; c2 = s[j] 代码顺序正确的选项是() A.①③② B.②③① C.③②① D.②①③
【解析】答案:C。 先取第i个和第j个字符 → 比较是否不等 → j向左移一位。顺序为③②①。
二、选择题第12题【加试题】:二分查找
【2016年10月原题】12.(加试题)某对分查找算法的VB程序段如下:
i = 1: j = 9: n = 0key = Val(Text1.Text)Do While i <= jn = n + 1m = Fix((i + j) / 2)If key = d(m) Then Exit DoIf key < d(m) Then j = m - 1 Else i = m + 1Loop
数组元素d(1)到d(9)的值依次为“7,12,18,25,39,58,61,72,86”。若该程序段运行结束后,n的值为2,则key的值是() A.39 B.18或61 C.18或72 D. 12或61
【Python版】某对分查找算法的Python程序段如下:
i =0:j =8:n =0key =int(input())while i <= j:n = n +1m = (i + j) //2if key == d[m]:breakif key < d[m]:j = m -1else:i = m +1print(n)
数组元素d[0]到d[9]的值依次为“7,12,18,25,39,58,61,72,86”。若该程序段运行结束后,n的值为2,则key的值是() A.39 B.12或61 C.18或72 D. 18或61
【解析】第1次查找m=4,第2次查找:
·向左查m=2 → d[1]=12
·向右查m=6 → d[6]=61,所以key为12或61。故选B。
三、非选择题第14题:循环分支
【2016年10月原题】编写“加法练习题生成器”程序,实现如下功能:在文本框Text1中输入题数n,单击“生成”按钮,在列表框中显示n个两数之和小于100的加法练习题。(题目及代码略)

【Python版】输入题数n,生成n道两个数之和小于100的加法练习题。Python程序运行效果如下:

(1)实现代码如下,请在划线处填入合适的代码:
import randomrandom.seed()n =int(input("请输入题数:"))i = ____①____while i <= n:a = random.randint(0, 99)b = random.randint(0, 99)if ____②____:print(f"({i}) {a}+{b}=")i = i +1
(2)运行程序,输入5,语句a=random.randint(0,99)执行次数最合理的是() A.执行次数等于5 B.执行次数大于等于5 C.执行次数小于等于5
【解析】 (1)① 填1:从第1题开始。 (2)② 填a + b < 100:保证和小于100。 (3)选B:可能生成不满足条件的式子,执行次数≥5。
四、非选择题第16题:冒泡排序
【2016年10月原题】16.(加试题)小吴为了研究冒泡排序过程中数据的“移动”情况,编写了一个VB程序,功能如下:在列表框List1中显示排序前数据(存储在数组a中),在文本框Text1中输入初始位置(即下标值),单击“排序”按钮Command1后,在标签Label1中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据显示在列表框List2中。程序运行界面如图所示。(题目及代码略)

【Python版】小吴为了研究冒泡排序过程中数据的“移动”情况,编写了一个Python程序,功能如下:输入初始位置(即下标值 + 1),回车后,会输出指定初始位置的数据在排序过程中的位置变化情况,包括排序前后的数据,程序运行如下图所示:

实现该功能的Python程序如下,加框处代码有误,请修正。
a = [30,47,30,72,70,23,99,24]print("排序前:",a)n =len(a)pos =int(input("初始位置:")) -1s =str(pos +1)for i inrange(n -1):for j inrange(n -1, i, -1):if a[j] < a[j-1]:k = a[j] # (1)加框处a[j-1] = a[j]a[j] = kif pos == j:pos = j -1s +="→"+str(pos +1)elif: #(2)加框处pos = js +="→"+str(pos +1)print("位置变化:", s)print("排序后:", a)
【解析】
(1)交换语句改为:k = a[j - 1]
(2)位置判断改为:elif pos == j-1:
五、非选择题第17题:数组操作
【2016年10月原题】17.(加试题)小李与小王合作编写一个成绩统计的VB程序:小王编写一个过程,该过程从数据库读取某一指定科目的相关数据,存储在数组a中;小李编写一个过程,该过程依据数组a中的相关数据统计各班平均分。小李与小王约定的数组a各元素含义如图所示。(题目及VB代码略)


【Python版】有数组a,存储如下数据:a[0]为班级数n;a[1]~a[n]为各班人数;a[n+1]开始依次存储第1班每个学生的单科成绩、第2班每个学生的单科成绩、...第n班每个学生的单科成绩。编写Python程序,计算每个班该门科目的平均分,程序运行结果如图所示:

实现上述功能的部分Python程序如下,请在划线处填入合适代码:
# 读取数据存入列表a,代码略# a =[2,5,3,77,78,79,80,81,82,83,84]# 统计各班平均分____①____p = n +1for i inrange(1, n +1):sum_score =0for j inrange(1, a[i] +1):____②____p +=1aver = sum_score / a[i]print(f"{i}{a[i]}{aver}")
【解析】① 填n = a[0]:读取班级总数。 ② 填sum_score += a[p]:累加当前班级成绩。
六、其他有价值的题目
无
往期回顾: