【真题回顾•第二期】2016年04月浙江省信息技术选考真题Python改编

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

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

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

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

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

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

一、选择题第11题:排序算法变形

【2016年4月原题】11.(加试题)有如下程序段:

For i = 1 To 2For j = 5 To i + 1 Step -1If a(j) > a(i) Thent = a(j): a(j) = a(i): a(i) = tEnd IfNext jNext i

数组元素a(1)到a(5)的值依次为“33,24,45,16,77”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为()            A. 77,45,33,16,24 B. 77,33,45,16,24            C. 77,24,45,16,33 D. 77,45,33,24,16

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

for i inrange(02):for j inrange(4, i, -1):if a[j] > a[i]:a[j], a[i] = a[i], a[j]print(a[0:5])

数组元素a[0]到a[4]的值依次为“33,24,45,16,77”,经过该程序段“加工”后,数组元素a[0]到a[4]的值依次为()            A. 77,45,33,16,24 B. 77,33,45,16,24            C. 77,24,45,16,33 D. 77,45,33,24,16

【解析】答案:A。

这段代码是一个变种的选择排序(Selection Sort),或者说,是一个带有冒泡特征的求最值算法。有排序算法基础,可以快速模拟。

最终结果:77,45,33,16,24。

二、选择题第12题:二分查找算法

【2016年4月原题】12.(加试题)已知一无序数组a(下标1到n),通过引入数组b(下标1到n),使得a(b(1))≤a(b(2)) ≤a(b(3))……≤a(b(n)),对这些有序数据可进行对分查找。则第一次查找时,中点位置m与中点值分别是()            A. m的值是Fix((1+n)/2),中点值是 a(m)            B. m的值是Fix((1+n)/2),中点值是 a(b(m))            C. m的值是Fix((b(1)+b(n))/2),中点值是 a(m)            D. m的值是Fix((b(1)+b(n))/2),中点值是 a(b(m))

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

【Python版】已知无序数组a,通过数组b实现有序,满足a[b[0]] ≤ a[b[1]] ≤ … ≤ a[b[n-1]]。对该有序序列进行对分查找,第一次查找时中点位置m与中点值分别是()            A. m=(1+n)//2,值为a[m]B. m=(1+n)//2,值为a[b[m]]            C. m=(b[0]+b[-1])//2,值为a[m]D. m=(b[0]+b[-1])//2,值为a[b[m]]

【解析】答案:B            对分查找的中点位置按查找范围1~n计算:m = (1 + n) // 2,有序值存放在a[b[m]]中。

三、非选择题第14题:基本语法

【2016年4月原题】14.(加试题)编写VB程序,实现如下功能:在文本框Text1中输入某一年份,单击按钮,在列表框中输出该年份开始的12个年份及对应的“天干地支”与“生肖”。

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

VB代码略

【Python版】输入一个年份,输出从该年份开始连续12年的天干地支与生肖。天干:甲乙丙丁戊己庚辛壬癸,地支:子丑寅卯辰巳午未申酉戌亥,生肖:鼠牛虎兔龙蛇马羊猴鸡狗猪。程序运行如下图所示:

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

(1)Python实现代码如下,请在划线处填入合适代码:

s1 ="甲乙丙丁戊己庚辛壬癸"s2 ="子丑寅卯辰巳午未申酉戌亥"s3 ="鼠牛虎兔龙蛇马羊猴鸡狗猪"=int(input("请输入年份:"))for i inrange(n, ____①____):= (i +6%10= (i +8%12c1 = s1[a]c2 = s2[b]c3 = s3[b]print(____②____, "年", c1 + c2, c3)

(2)由上述算法可知,2028年对应的“天干地支”为

【解析】(1)① 填 n + 12:连续12年,循环到n+12结束。            (1)② 填 str(i):输出当前年份。            (2)2028年对应天干地支:戊申

四、非选择题第16题:擂台法求最值

【2016年4月原题】16.(加试题)某地1900-1999年的平均降水量数据保存在数据库中。现要求找出相邻两年年平均降水量变化(即本年度与上年度“年平均降水量”差值的绝对值)最大的年份区间。如果多个符合要求的年份区间,只输出距今最近的。(VB代码略)‍

【Python版】数组w存储1900-1999年降水量,找出相邻年份差值绝对值最大的区间,有多个则输出最近的区间。程序加框处代码有误,请修正。

= [...]# 已存储100个数据,w[0]对应1900年=len(w)imax =0# (1)加框处:0for i inrange(1, n -1):ifabs(w[i] - w[i -1]) >=abs(w[i -1- w[i -2]): #(2)加框处:abs(w[i - 1] - w[i - 2])imax = iprint("最大区间:"1900-1+ imax, "-"1900+ imax)

【解析】

(1)初始值错误:imax = 0 改为 imax = 1。根据输出语句,假如1900-1901就是最大区间,那么imax的值应该是1才符合输出结果。

(2)擂台对象错误:abs(w[i - 1] - w[i - 2])改为abs(w[imax] - w[imax-1])

五、非选择题第17题:数据压缩算法

【2016年4月原题】(加试题)17.某数据压缩方法描述如下:

1)原始数据中,某数不为0且相邻无重复,压缩数据用该数据表示;

2)原始数据中,某数为0且相邻无重复,压缩数据用两个数表示,第1个位0,第2个为0;

3)原始数据中,某数据相邻有重复,压缩数据用3个数表示:第1个位0,第2个为重复数的个数,第3个为该数本身;

根据上述压缩方法,对应的解压缩方法示例如图a所示。

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

图a

VB运行界面如图b所示。

【真题回顾•第二期】2016年04月浙江省信息技术选考真题Python改编 第5张

图b

VB题目及代码略

【Python版】某数据压缩方法描述如下:

1)原始数据中,某数不为0且相邻无重复,压缩数据用该数据表示;

2)原始数据中,某数为0且相邻无重复,压缩数据用两个数表示,第1个位0,第2个为0;

3)原始数据中,某数据相邻有重复,压缩数据用3个数表示:第1个位0,第2个为重复数的个数,第3个为该数本身;

根据上述压缩方法,对应的解压缩方法示例如图a所示。

【真题回顾•第二期】2016年04月浙江省信息技术选考真题Python改编 第6张

图a

Python程序运行如图b所示。

【真题回顾•第二期】2016年04月浙江省信息技术选考真题Python改编 第7张

图b

(1)如果压缩数据为“23,0,21,66,0,0,77,0,5,0”,则解压缩数据的个数是

(2)实现解压缩的Python程序如下,请在划线处填入合适代码。

=list(map(int,input("压缩数据:").split()))= [0*1000# 解压缩结果=len(a)# 压缩数据长度pa =0# 压缩数组指针pb =0# 解压缩数组指针while pa < n:first = a[pa]if first !=0:b[pb] = firstpa +=1pb +=1else:count = a[pa +1]if count ==0:b[pb] =0pa = ____①____pb +=1else:for i inrange(count):____②____pa +=3pb += count# 输出结果res = []for i inrange(____③____):res.append(str(b[i]))print(','.join(res))

【解析】

(1)答案:29。根据规则可知解压缩数据为:1个23,21个66,1个0,1个77,5个0,1+21+1+1+5=29。

(2)① 填 pa + 2:跳过0和count。            (2)② 填 b[pb + i] = a[pa + 2]:循环写入重复数值。            (2)③ 填 pb:输出有效解压缩长度。

六、其他有价值的题目

往期回顾:

【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编

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