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

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

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

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

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

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

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

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

【2017年4月原题】11.(加试题)某对分查找算法的VB程序段如下:

key = Val(Text1.Text)i = 1: j = 10Text2.Text = ""Do While i <= jm = Int((i + j) / 2 + 0.5)If key = a(m) Then Exit DoIf key < a(m) Then j = m - 1 Else i = m + 1Text2.Text = Text2.Text + Str(a(m))Loop

数组元素a(1)到a(10)的值依次为“8,17,24,30,36,40,55,58,61,66”,文本框Text1中输入的值是30,执行该程序段,文本框Text2中显示的是()        A.40 24 B.40 24 36 C.36 24 D.36 17 24

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

= [8,17,24,30,36,40,55,58,61,66]key =30=1=10ans =""while i <= j:=int((i + j) /2+0.5)if key == a[m]:breakif key < a[m]:= m -1else:= m +1ans = ans +str(a[m]) +" "print(ans)

该程序段运行后,输出结果是()            A.40 24 B.40 24 36 C.36 24 D.36 17 24

【解析】key=30,查找过程:            i=0,j=9,m=int((0+9)/2+0.5)=5,a[5]=40≠30,30<40,j=5,记录40            i=0,j=4,m=int((0+4)/2+0.5)=2,a[2]=24≠30,30>24,i=4,记录24            i=3,j=4,m=int((3+4)/2+0.5)=4,a[4]=36≠30,30<36,j=4,记录36            i=4,j=4,m=4,a[4]=30,退出循环。            最终ans值为:40 24 36。故选B

二、选择题第12题:选择排序变形

【2017年4月原题】12.(加试题)小赵对选择排序算法进行了如下改进:在数组的所有元素中找出最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素的数据按升序排列。小赵编写的VB程序段如下:

p = 1: q = 10Do While p < qiMin = p: iMax = pFor i = p + 1 To qIf a(i) < a(iMin) Then iMin = iIf a(i) > a(iMax) Then iMax = iNext it = a(iMin): a(iMin) = a(p): a(p) = tt = a(iMax): a(iMax) = a(q): a(q) = tp = p + 1q = q - 1Loop

要使程序实现上述算法思想,则方框中的语句是()            A.If iMax = p Then iMax = iMin            B.If iMin = p Then iMin = iMax            C.If iMax = p Then iMin = iMax            D.If iMin = p Then iMax = iMin

【Python版】小赵对选择排序算法进行了如下改进:在数组的所有元素中找出最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素的数据按升序排列。小赵编写的Python程序如下:

= [4,5,2,8,1,10,6,33,76,18,9]=0=10while p < q:iMin = piMax = pfor i inrange(p +1, q +1):if a[i] < a[iMin]:iMin = iif a[i] > a[iMax]:iMax = ia[p], a[iMin] = a[iMin], a[p]___①___a[q], a[iMax] = a[iMax], a[q]= p +1= q -1

则①处应填语句为()            A.If iMax = p:iMax = iMin            B.If iMin = p:iMin = iMax            C.If iMax = p:iMin = iMax            D.If iMin = p:iMax = iMin

【解析】最小元素与p位置交换后,若原最大值位置是p,最大值位置会被覆盖,需把iMax改为iMin。            故选A

三、非选择题第14题:进制转换程序实现

【2017年4月原题】14.(加试题)奇偶校验是一种校验数据传输正确性的方法。其中奇校验方法:统计二进制数据的数位中“1”的个数,若个数为奇数,则校验位值为0,否则校验位值为1。小李编写了一个计算奇校验位值得VB程序,功能如下:在文本框Text1中输入1~255十进制待校验数,单击“计算”按钮后,在文本框Text2中显示该数对应的二进制值,并在标签Label3中显示该数的校验位值。程序运行界面如图:(VB代码略)

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

【Python版】奇偶校验是一种校验数据传输正确性的方法。其中奇校验方法:统计二进制数据的数位中“1”的个数,若个数为奇数,则校验位值为0,否则校验位值为1。小李编写了一个计算奇校验位值的Python程序,功能如下:输入1~255十进制待校验数,回车后,显示该数对应的二进制值,并换行显示该数的校验位值。程序运行如下:

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

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

=int(input("请输入待校验数:"))=0=""while n >0:= n %2= n //2= ____①____=str(a) + s= t %2print("二进制:", s)print("校验位值:", ____②____)

(2)运行该程序,如果输入22,回车,则显示的校验位值是_______

【解析】(1)① 填t + a:统计二进制中1的个数。            (1)② 填1 - v:奇校验位规则,1的个数奇数则为0,偶数则为1。            (2)输入22,二进制为10110,1的个数为3(奇数),校验位值为0

四、非选择题第16题:枚举算法和字符串处理

【2017年4月原题】16.(加试题)小王编写了一个实现文字查找替换功能的VB程序,文本框Text1显示原文内容,Text2中输入查找内容,Text3中输入替换内容,单击“全部替换”按钮后,Text4显示查找替换的结果,Text5中显示替换的次数,Text6显示“查找内容”在原文中的起始位置。程序加框处代码有错,请改正。

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

【Python版】小王编写了一个实现文字查找替换功能的Python程序,输入原文、查找内容、替换内容,输出查找替换的结果,并显示替换的次数及“查找内容”在原文中的起始位置。程序运行如下图:

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

实现上述功能的Python程序如下,加框处代码有错,请改正。

#博客是一种特殊的网络出版形式。博客已经得到了广泛应用。目前,一些政府部门在网上建立了官方博客,借此平台发布重要信息,博客已成为政府部门对外交流的窗口之一。text1 =input("请输入原文:")text2 =input("请输入查找内容:")text3 =input("请输入替换内容:")=0count =0result =""pos =""len_find =len(text2)while i <=len(text1) -1:= text1[i:i+len_find]if s == text2:result = result + text3count = count +1pos = pos +str(count) +" "# (1)加框处:pos + str(count)= i + len_findelse:result = result + text2# (2)加框处:result = result + text2= i +1print("替换结果:", result)print("替换次数:", count)print("起始位置:", pos)

【解析】

(1)位置记录错误:pos + str(count) 改为 pos + str(i + 1)(Python从0开始)。

(2)替换错误:result = result + text2 改为 result = result + text1[i]

五、非选择题第17题:桶思想和数组应用

【2017年4月原题】17.(加试题)小王编写了一个依据成绩计算名次的VB程序,成绩为0到100之间的整数。算法的基本思想:先统计每个分数的个数,然后按照分数从高到低依次计算每个有效分数(该分数的个数不为0)对应的名次,分数相同时名次并列。最高分为第1名,该分数的名次与个数之和为下一个有效分数的名次,以此类推。程序用数组A存放每个分数对应的个数,数组B存放每个分数对应的名次。例如,下表中最高分100有2个,并列第1名,则分数96的名次为分数100的名次加上分数100的个数,即第3名。

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

程序运行界面如图所示:

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

设问及VB代码略

【Python版】小王编写了一个依据成绩计算名次的Python程序,成绩为0到100之间的整数。算法的基本思想:先统计每个分数的个数,然后按照分数从高到低依次计算每个有效分数(该分数的个数不为0)对应的名次,分数相同时名次并列。最高分为第1名,该分数的名次与个数之和为下一个有效分数的名次,以此类推。程序用数组A存放每个分数对应的个数,数组B存放每个分数对应的名次。例如,下表中最高分100有2个,并列第1名,则分数96的名次为分数100的名次加上分数100的个数,即第3名。

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

程序运行如图所示:

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

实现上述功能的Python程序如下,请回答下列问题:

(1)如表所示,若分数93的个数为2,则该分数对应的名次为________

(2)请在划线处填入合适的代码。

sName = ["陈立港","李小宝","历乐天","杨加惠","许兴天","潘恩西","高力军","杨红婷"]sScore = [75,87,100,85,76,100,65,96]____①____# 学生人数# 统计分数个数、计算名次= [0*101# A[i]表示分数i的人数= [0*101# B[i]表示分数i的名次for i inrange(n):____②____mc =1for i inrange(100-1-1):if A[i] !=0:B[i] = mc____③____# 输出学生姓名、分数、名次for i inrange(1, recCount +1):score = sScore[i]mc = B[score]print(sName[i], score, "第", mc, "名")

【解析】(1)分数93个数为2,名次为:7

(2)① 填n = len(sName)或n = len(sScore):使用len()函数得到学生人数     ② 填A[sScore[i]] = A[sScore[i]] + 1:统计每个分数出现次数。           ③ 填mc = mc + A[i]:更新下一个分数名次。

六、其他有价值的题目

‍无

往期回顾:

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

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

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

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