2020年12月青少年软件编程(Python)等级考试试卷(四级).docx
青少年软件编程(PythOn)等级考试试卷(四级)分数:100.00题数:38一、单选题(共25题,每题2分,共50分)1.以下有关算法的表述中正确的是?OA、描述算法可以有不同的方式,可用自然语言也可用流程图等B、算法可以看成按照要求设计好的有限的确切的步骤解决问题,并且这样的步骤只能解决当前问题C、算法需要一步一步执行,每一步执行的操作必须明确,不能含混不清,而且经过有限步或无限步后能得出结果D、算法要求按部就班地执行相应的步骤,每一步可以有不同的结果试题编号:20200404-XC-Ol2题型:单选题答案:A难度:一般试题解析:算法可以看成按照要求设计好的有限的确切的步骤,并且这样的步骤能解决一类问题,故B不正确;算法是有限步,结果明确性;算法的每一步操作必须是明确的,不能有歧义或模糊是正确的,故D不正确。2 .以下选项中不是Python对文件的写操作方法的是?()A、writelineswriteC、write和seekDxwritetext试题编号:20200325-ysy-001题型:单选题答案:D难度:一般试题解析:Python文件对象提供了两个“写”方法:Writeo 和WritelineS()。Write()方法和read。、readline()方法对应,是将字符串写入到文件中。WritelineS()方法和readlines()方法对应,也是针对列表的操作。它接收一个字符串列表作为参数,将他们写入到文件中,换行符不会自动的加入,因此,需要显式的加入换行符。3 .以下选项中,哪一个不属于函数的作用?()A、提高代码的执行速度B、提高代码的重复利用率C、增强代码的可读性D、降低编程的复杂度试题编号:20200402-XC-O23题型:单选题答案:A难度:一般试题解析:函数能够提高代码的重复利用率,增强代码的可读性,降低编程的复杂度,但高代码的执行速度不是它的特点。4 .关于计算圆面积的匿名函数的定义,以下哪一个语法格式是正确的?()A、lambda3.1415926*r*rresult=lambda3.1415926*r*rC、lambdar,3.1415926*r*rD、result=lambdart3.1415926*r*r试题编号:20200402-Xe-OO5题型:单选题答案:B难度:一般试题解析:关键字Iambda表示匿名函数,冒号之前的表示它们是这个函数的参数,匿名函数不需要return来返回值,表达式本身结果就是返回值。在定义匿名函数时,需要将它直接赋值给一个变量,然后再像一般函数调用。5 .运行以下程序输出的结果是?OX=Idefdemo(): globalx x=2 print(x) demo() print(x)A、l 1B、2 1C、l 2D、2 2试题编号:20200402-xc-006题型:单选题答案:D难度:较难试题解析:Python中定义函数时,若想在函数内部对函数外的变量进行操作,就需要在函数内部声明其为global以改变它的值。6 .关于以下程序,下列表述中错误的一项是?Odefdemo(n): s=l foriinrange(l,n): s*=i returnSA、demo(n)函数的功能是求n的阶乘B、S是局部变量C、n是形式参数D、range。函数是Python内置函数试题编号:20200402-XC-O25题型:单选题答案:A难度:一般试题解析:demo(n)函数的功能是求阶乘,range(l,n)是从1循环到n-lo7 .以下哪一个函数是指直接或间接调用函数本身的函数?()A、map函数zip函数C、匿名函数D、递归函数试题编号:20200402-XC-O31题型:单选题答案:D难度:容易试题解析:递归函数是指直接或间接调用函数本身的函数。8 .关于以下程序,运行程序输出结果正确的是?Odefdemo(x): returnx*2; print(demo(demo(demo(l)A、1B、2C、4D、8试题编号:20200402-xc-026题型:单选题答案:D难度:一般试题解析:调用三次,1乘以三次2,因此结果为8。9 .用于安装Python第三方库的工具是?()AsInstallpipC、WheelDSetup试题编号:20200315-ysy-004题型:单选题答案:B难度:一般试题解析:用于安装Python第三方库的工具可以用pipinstall第三方库名。10 .分治,”分而治之“°从字面上理解就是分-治,把大的问题分成小问题,解决一个一个小问题,之后把问题的答案合并起来,就得到大问题的结果。历史上也有很多故事属于分治思想,以下属于分治思想的是?OA、三国时,曹操带兵长途行军,士兵们都很口喝,曹操便说:“前面就是一大片梅林,结了许多梅子,又甜又酸,可以解渴。”士兵们听了,嘴里都流口水,一时也就不渴了。B、战国时期,秦国通过远交近攻的策略,逐个击破,最后统一六国。C、汉末刘备三次到诸葛亮住的茅屋去邀请他出来帮助自己打天下,最后诸葛亮才答应出来。D、三个臭皮匠顶个诸葛亮是一个文化术语。指的是三个副将的智慧能顶一个诸葛亮。试题编号:20200404-XC-OO9题型:单选题答案:B难度:较难试题解析:B体现分治思想11 .运行以下函数,正确的打印是?Odefdomai2(a,b): a=a+b returnaa=2print(domai2(2,a)A、4B、2C、1D、7试题编号:20200413-zwy-023题型:单选题答案:A难度:容易试题解析:知识点:自定义函数的创建与调用12 .以下选项中关于递归算法的描述,错误的是?()A、书写简单B、一定要有基例(指不需要递归就能求解的解)C、递归算法都可以用非递归的方法实现D、执行效率高试题编号:20200413-zwy-030题型:单选题答案:D难度:容易试题解析:知识点:递归与递推13 .以下用于绘制弧形的函数是?()A、turtle.seth()turtle.right()C、turtle.circle()D、turtle.fd()试题编号:20200316-ysy-006题型:单选题答案:C难度:一般试题解析:14 .Python中函数不包括以下哪一个?()A、参数函数B、标准函数C、内建函数D、第三方库函数试题编号:20200408-Xe-Oo6题型:单选题答案:A难度:一般试题解析:Python中函数包括标准函数、内建函数、第三方库函数等15 .运行以下函数,正确的打印是?Odeffunction(a): s=0 while(a>O): if(a%2=0): s+=a*(a-l) else: s+=a+(a-l) a=a-1 returnSprint(function(6)A、21B、36C、59D、46试题编号:20200413-zwy-026题型:单选题答案:C难度:一般试题解析:知识点:递归与递推16 .运行以下函数,正确的打印是?Odeftest(num): print("thenumberis%d,"%(num)test(888)A、thenumberis%d.thenumberis888.C、thenumberis%d.888Dthenumberis888.888试题编号:20200413-zwy-021题型:单选题答案:B难度:容易试题解析:知识点:自定义函数的创建与调用17 .下列哪个关键词可用来表示返回值?()A、backBxreturnC、retD、ok试题编号:20200413-zwy-004题型:单选题答案:B难度:容易试题解析:知识点:函数的相关概念18 .对元素规模为n的列表进行对分查找时,无论是否找到,至多进行()次查找?AsnB、(n+l)2C、n-1DIog2n+1试题编号:20201122-ssn-003题型:单选题答案:D难度:一般试题解析:对元素规模为n的列表进行对分查找时,无论是否找到,至多进行og2n+1(Iog2n+1表示大于或等于Iog2n的最小整数)次查找就能得到结果。19 .代码: defsum(numl,num2): numl=numl+l num2=num2+2 result=numl+num2 returnresult a=3 b=4 c=sum(a,b) print(',a=",1a,b=",b,"c=",c)<Stnbsp;以下说法正确的是?()A、程序的运行结果为:a=3b=4c=10B、程序的运行结果为:a=4b=6c=10C、程序的运行结果为:a=4b=6C=7D、编译错误,程序无法运行。试题编号:20200308-ysy-005题型:单选题答案:A难度:较难试题解析:20 .运行以下代码,若d的值为17,则return后面应该填?()deffunction(a,b): c=a+b returna,b=3,2d=function(a,b)A、c+a+bc-a*bC、c+a*bD、c*a+b试题编号:20200413-zwy-009题型:单选题答案:D难度:容易试题解析:知识点:函数的返回值21 .以下函数要计算X的n次方,则应补充选项为?()defpower(x,): s=1 whilen>0: s=s*x returnsAvn=n=n+1Csn=n-2Dn=n-1试题编号:20200413-zwy-031题型:单选题答案:D难度:容易试题解析:知识点:递归与递推22 .以下不可以使用分治法求解的是?()A、棋盘覆盖问题Bs选择问题C、归并排序D、0/1背包问题试题编号:20200414-ysy-009题型:单选题答案:D难度:较难试题解析:可使用分治法求解的一些经典问题(1)二分搜索(2)大整数乘法(3)StraSSen矩阵乘法(4)棋盘覆盖(5)合并排序(6)快速排序(7)线性时间选择(8)最接近点对问题(9)循环赛日程表(10)汉诺塔23.下面的故事与哪一个算法有着异曲同工之妙?()从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事A、穷举B、递归C贪心D、分治试题编号:20200404-XC-Ool题型:单选题答案:B难度:一般试题解析:递归函数是指直接或间接调用函数本身的函数。24.有2*n的一个长方形方格,用一个1*2的骨牌铺满方格,当n=5时,铺法总数为多少?OHII±HIH巾1A、5B、6C、7D、8试题编号:20200408-xc-004题型:单选题答案:D难度:较难试题解析:对一般的n,要求Xn可以这样来考虑,若第一个骨牌是竖排列放置,剩下有n-1个骨牌需要排列,这时排列方法数为Xn-1;若第一个骨牌是横排列,整个方格至少有2个骨牌是横排列(1*2骨牌),因此剩下n-2个骨牌需要排列,这是骨牌排列方法数为Xn-2。从第一骨牌排列方法考虑,只有这两种可能,所以有: xn=xn-l+xn-2(n>2) xl=l x2=2 xn=xn-l+xn-2就是问题求解的递推公式,任给n都可以从中获得解答。例如n=5, x3=x2+xl=3 x4=x3+x2=5 x5=x4+x3=825.运行以下函数,正确的打印结果是?Odefsub(a,b): returna-ba,b=5,3c=sub(b,a)print(c)A、2B、-2C、1D、-1试题编号:20200413-zwy-012题型:单选题答案:B难度:一般试题解析:知识点:函数的参数二、判断题(共10题,每题2分,共20分)26. 调用函数PrinJinf。(“李华”,“167男”)输出的结果是:“姓名:李华,年龄:16,性别:男”defprintjnfo(name,age,sex); str="姓名:"+name+",年龄:"+age+",性别:"+sex print(str)试题编号:20200320-wc-012题型:判断题答案:正确难度:容易试题解析:调用函数WinJinf。("李华7167男“)时,参数“李华”-16”,”男“分别被赋值给形参name,age,sext并将参数合并为一个字符串str,输出字符串str时就能够输出结果:“姓名:李华,年龄:16,性别:男”。27. PoWer(X,n)函数是计算X的n次哥的函数,PoWer(X,n)函数运用了分治算法的思想,调用PoWer(3,3)函数的计算结果是:27defpower(x,n): if=2: returnX ifn%2=O: returnpower(x,n2)*power(xtn2) else: returnpower(xt(n+1)/2)*power(x,(n-1)/2)试题编号:20200330-wc-032题型:判断题答案:错误难度:一般试题解析:函数的递归条件是:n=lo因为当n为奇数时,n2或(n-l)2或(n+l)2的最小值是1.28. 执行以下代码:n=5deffun(): x=n+l print(x)fun()程序输出的结果为:6试题编号:20200407-zpf-009题型:判断题答案:正确难度:较难试题解析:29.运行如下图的代码,变量m无论取值是多少,Print打印出的值都不可能大于30。2tatACPMmWntowSdefn(x):whilex<30:×=x+lreturnxprint(n(m)试题编号:20200319-LL-OIl题型:判断题答案:错误难度:一般试题解析:m的值如果是31,打印出的就是31,本题考查学生对函数体之中语句的理解30 .使用pipinstall-upgradenumpy命令能够升级numpy科学计算扩展库。试题编号:20200330-wc-038题型:判断题答案:正确难度:一般试题解析:使用“pipinstall-upgrade包名”命令能够升级已安装的第三方库31 .type(str)函数的返回值是参数str的数据类型。试题编号:20200320-wc-006题型:判断题答案:正确难度:容易试题解析:type()函数是Python内置的计算参数类型的函数32 .调用嵌套函数OUter(),两次输出变量X的值是不一样的。 defouter(): x="local" definner(): x='nonlocal' Print("inner:",x) inner() print("outer:",x)试题编号:20200320-wc-018题型:判断题答案:正确难度:一般试题解析:在嵌套函数中,嵌套函数内部与嵌套函数外部相同名称的变量是互不影响的,所以两次输出变量X的值是不一样的。33 .执行以下代码:defsum_n(n): if=1: return2 t=sum_n(n-2) returnn+tresult=sum_n(5)print(result)程序输出的结果为:10试题编号:20200407-zpf-022题型:判断题答案:正确难度:一般试题解析:34 .函数factOrialreCUrSiVe(n)与factorialCyCIe(n)分别是运用递归和循环计算的阶乘的函数,因为两个函数都能够计算n的阶乘,所以递归和循环的时间复杂度是一样的。deffactorialrecursive(n): if=1: return1returnn*factorial(n-l) deffactorialcycle(n): result=1 while(n>l): result=result*n n=-l returnresult试题编号:20200330-WC-O36题型:判断题答案:错误难度:一般试题解析递归与循环所执行的时间是不一样的,所以递归与循环的时间复杂度是不一样的。35 .新型冠状病毒感染的肺炎是一种全新的冠状病毒肺炎,该病毒具有人群易感性,预防病毒我们要做到勤洗手、戴口罩,多通风。假设新型冠状病毒每轮会传染给X人,则经过n轮传染后,有n*x个人感染。试题编号:20200407-zpf-025题型:判断题答案:错误难度:一般试题解析:三、编程题供3题,共30分)36 .要求:设计一个算法,如果一个数从左边读和从右边读都是同一个数,就称为回文数。例如9889就是一个回文数,求对于用户输入的一个非零正整数判断是否为回文数。根据上述算法思想,补全下列代码。示例:输入9889,返回9889是回文数;输入34542,返回34542不是回文数。i=input(“请输入一个非零正整数:")n=len(i)if : forjinrange(int(n+l)2): if : ifn=2*j+l: Print:(")是回文数".format。) else: Print("0不是回文数”.format。) breakelse: forjin : ifij=in-j-l: if : Print:(")是回文数".format。) else: Print:("(不是回文数”.format。) break试题编号:20200330-Ph-OO8题型:编程题答案:参考答案:n%2!=0:或等效答案;(3分)ij=in-jl:或等效答案;(3分)range(int(n2)或等效答案;(2分)n=2*(j+l)或等效答案;(2分)难度:一般试题解析:参考答案:i=input(”请输入一个非零正整数:“)n=len(i)ifn%2!=0: forjinrange(int(n+l)2): ifi11=in-j-l: ifn=2*j+l: Print:(")是回文数".format(i) else: Print("()不是回文数".format。) breakelse: forjinrange(int(n2): ifi11=in-j-l: ifn=2*G+l): Print:(")是回文数".format(i) else: Print("()不是回文数".format。) break37 .任务:利用分治思想,在50个同学成绩(成绩不重复)中查找指定成绩的同学的编号,学生成绩存储在列表Cj中;待查找的成绩由键盘输入到变量key中。根据上述算法思想,编写自定义函数完成程序功能,完善空白处代码。Iltlll函数名defsearch(lft,rgt,key)参数表:整数ft,rgt表示待查找列表的左右边界,key是待查找的成绩返回值:找到返回key所在编号,否则返回-1.Iltllldefsearch(lft,rgt,key): iflft>rgt: return-1 mid二 ifcjmid=key: returnmid elif: Ift=mid+1 else: rgt=mid-1 importrandomcj=random.randint(l,100)foriinrange(50)cj.sort()key=int(input("输入待查找的成绩")pos=search(0,49,key)print(pos)试题编号:20200330-fcl-010题型:编程题答案:评分标准:(lft+rgt)/2 (2分) cjmid<key (3分) returnSearCh(IftJgt,key) (3分)难度:一般试题解析:参考答案:defsearch(lft,rgt,key): iflft>rgt: return-1 mid=(lft+rgt)2 print(datamid) ifdatamid=key: returnmid elifdatamid<key: Ift=mid+1 else: rgt=mid-1 returnsearch(lft,rgt,ky)importrandomdata=random.randint(l,100)foriinrange(50)data.sort()key=int(input("输入待查找的成绩”)pos=search(0,49,key)print(pos)38.要求:设计一个算法,对于给定两个正整数,求它们的最大公约数。根据上述算法思想,补全下列代码。函数名:gcd(×,y)参数表:X整数X,y-整数y。返回值:它们的最大公约数。示例:当x=6,y=9时,返回3odefgcd(x,y): if : returny else: retum &ebsp; sums=0m=int(input('请输入第一个正整数m=,)n=int(input(,请输入第二个正整数=1)SIlmS= print("m和n两个正整数的最大公约数是:%d"驰SUmS)试题编号:20200330-Ph-Oo5题型:编程题答案:评分标准:x%y=0或等效答案;(4分)gcd(y,x%y)或等效答案;(4分)gcd(m,n)或等效答案;(4分)难度:容易试题解析:参考答案:defgcd(x,y): ifx%y=0: returny else: returngcd(y,x%y)sums=0m=int(input('请输入第一个正整数m=,)n=int(input('请输入第二个正整数=1)sums=gcd(m,n)print("m和n两个正整数的最大公约数是:%d,%sums)