内容正文:
青少年软件编程(Python)等级考试试卷(四级)
分数:100 题数:38
一、单选题(共25题,共50分)
1.
下列有关分治算法思想的描述不正确的是?( )
A.
将问题分解成的子问题具有相同的模式。
B.
将问题分解出的各个子问题相互之间有公共子问题。
C.
当问题足够小时,可以直接求解。
D.
可以将子问题的求解结果合并成原问题的解。
试题编号:202306-zj-020
试题类型:单选题
标准答案:B
2.
斐波那契数列前n项是1,1,2,3,5,8,13......
补全下面程序代码,求第n项斐波那契数列的值。
def fib(n):
if ______:
return 1
else:
return fib(n-1) + fib(n-2)
A.
n == 2
B.
n < 2
C.
n == 3
D.
n < 3
试题编号:202306-zj-021
试题类型:单选题
标准答案:D
3.
用分治法求两个数的最大公约数,代码和运行结果如下,请选择合适的代码完成程序?( )
def fun(m, n):
if m % n == 0:
return n
else:
return __________
print(fun(98, 56))
程序运行结果如下:
14
A.
fun(n, m-n)
B.
fun(n, m%n)
C.
fun(m, m-n)
D.
fun(m, m%n)
试题编号:202306-zj-022
试题类型:单选题
标准答案:B
4.
列出第三方库的详细信息的pip指令是?( )
A.
pip install <第三方库名>
B.
pip download<第三方库名>
C.
pip show<第三方库名>
D.
pip list<第三方库名>
试题编号:20230615-fcl-031
试题类型:单选题
标准答案:C
5.
想要在Python中导入math模块中的sqrt(x)函数,下列程序段错误的是?( )
A.
import math
math.sqrt(x)
B.
from math import sqrt as t
t(x)
C.
import math as m
m.sqrt(x)
D.
import math
sqrt(x)
试题编号:20230615-fcl-032
试题类型:单选题
标准答案:D
6.
关于求解“找出所有满足各位数字之和等于8的三位数”时,在下列数值范围内,算法执行效率最高的是?( )
A.
0—999
B.
0—1000
C.
100—800
D.
107—800
试题编号:20230702-xyr-023
试题类型:单选题
标准答案:D
7.
已知,从1到n的连续自然数相乘的积叫做阶乘,用符号n!表示,比如3!=1×2×3,规定0!=1。那么用递归算法求n的阶乘,递归式正确的是?( )
A.
f(0)=1,n=n*(n-1)
B.
f(0)=1,f(n)=f(0)*f(n-1)
C.
f(0)=1,f(n)=f(n)*f(n-1)
D.
f(0)=1,f(n)=n*f(n-1)
试题编号:20230704-TR-019
试题类型:单选题
标准答案:D
8.
当n为6时,运行下列Python程序后的结果是?( )
def f(n):
if n<=2:
return 1
else:
return f(n-1)+f(n-2)
n=int(input("请输入一个正整数:"))
print(f(n))
A.
5
B.
8
C.
11
D.
13
试题编号:20230704-TR-020
试题类型:单选题
标准答案:B
9.
下列程序中,当n=4时,返回结果为?( )
def x(n):
if n==1:
return 1
else:
return n+x(n-1)
A.
12
B.
11
C.
10
D.
9
试题编号:20230704-TR-021
试题类型:单选题
标准答案:C
10.
下列选项中,不属于递归特性的是?( )
A.
递归函数一定包含条件控制语句
B.
递归算法体现了大事化小的思想
C.
递归效率不高,递归层次过多会导致栈溢出
D.
递归算法代码简洁,效率较高
试题编号:20230704-TR-022
试题类型:单选题
标准答案:D
11.
对于下列递归式子,当n=4时,F的值是?( )
F(n)=F(n-1)*2
F(1)=2
A.
2
B.
8
C.
16
D.
32
试题编号:20230704-TR-023
试题类型:单选题
标准答案:C
12.
下面函数实现的功能是?( )
def mi(x, n):
if n == 0:
return 1
else:
return x*mi(x, n-1)
A.
计算x的n次方
B.
计算n的x次方
C.
计算x!*n
D.
计算x*n!
试题编号:20230704-TR-024
试题类型:单选题
标准答案:A
13.
def afun(n):
s=1
for i in range(1,n+1):
s*=i
return s
对以上代码解释错误的是?( )
A.
程序正常运行时,afun(n)函数的作用是求n的阶乘
B.
程序正常运行时,afun(n)函数的作用是求n+1的阶乘
C.
s是局部变量
D.
range()函数是Python内置函数
试题编号:20230710-cqf-11
试题类型:单选题
标准答案:B
14.
关于下列代码解释错误的一项是?( )
def ZhongYao(a:str,b:int)->str:
word=a*b
print('重要的事情说{}遍:{}'.format(b,word))
return ZhongYao
ZhongYao('学习','3')
A.
参数a的数据类型必须是字符串
B.
参数b的数据类型必须是整型
C.
函数指定了返回值的数据类型是字符串
D.
程序正常运行,输出结果是:
重要的事情说3遍:学习学习学习
试题编号:20230710-cqf-12
试题类型:单选题
标准答案:D
15.
下列代码的运行结果是?( )
def exchange(a,b):
a,b=b,a
print(a,b)
a,b=3,5
exchange(a,b)
print(a,b)
A.
5 3
5 3
B.
3 5
3 5
C.
5 3
3 5
D.
5
3
3
5
试题编号:20230710-cqf-13
试题类型:单选题
标准答案:C
16.
下列代码的运行结果是?( )
def car_show(cars):
for car in cars:
print('good',car)
car_show(['BYD','Haval','Wuling'])
A.
good ['BYD','Haval','Wuling']
B.
'good','BYD'
'good','Haval'
'good','Wuling'
C.
good BYD Haval Wuling
D.
good BYD
good Haval
good Wuling
试题编号:20230710-cqf-15
试题类型:单选题
标准答案:D
17.
函数中定义了4个参数,其中2个参数都指定了默认值,见下面代码,那么在调用函数时参数个数最少是?( )
def SiBianXing(a,b,c=5,d=8):
ZhouChang=a+b+c+d
return ZhouChang
SiBianXing( ? )
A.
0
B.
2
C.
1
D.
3
试题编号:20230710-cqf-23
试题类型:单选题
标准答案:B
18.
执行如下程序,以下选项中哪一项是错误的?( )
def f(a,b):
c=a+b*2
b=a
return c
a=1
b=2
c=f(a,b)+b
A.
该函数名称为f
B.
执行该程序后,变量a的值为1
C.
执行该程序后,变量b的值为2
D.
执行该程序后,变量c的值为6
试题编号:20230710-cqf-25
试题类型:单选题
标准答案:D
19.
以下哪种情况下的代码块适合设计成函数?( )
A.
复杂的功能块
B.
难以看懂的功能块
C.
有性能要求的功能块
D.
会多次用到的功能块
试题编号:20230713-xm-001
试题类型:单选题
标准答案:D
20.
使用位置实参的方式调用函数时,下列哪种情况下程序一定会出错?( )
A.
传入的实参个数比形参个数多
B.
部分形参赋以默认值
C.
函数调用时,重新给赋予了默认值的形参传入新值
D.
部分实参以关键字赋值的方式去调用函数
试题编号:20230713-xm-002
试题类型:单选题
标准答案:A
21.
下列函数定义中,正确的是?( )
A.
def myfunc(a,b,c)
print(myfunc(a,b))
B.
def myfunc(a=1,b,c):
print(myfunc(a,b,c))
C.
def myfunc(a,b=1,c):
print(myfunc(a,b,c))
D.
def myfunc(a,b,c=1):
print(myfunc(a,b,c))
试题编号:20230713-xm-003
试题类型:单选题
标准答案:D
22.
调用函数的时候,所使用的参数是?( )
A.
实参
B.
位置参数
C.
关键字参数
D.
不定长参数
试题编号:20230713-xm-004
试题类型:单选题
标准答案:A
23.
对于如下自定义的函数:
def myfunc(a,b,c):
return a+b+c
以下调用该函数的语句中,能正确执行的是?( )
A.
myfunc(1,2)
B.
myfunc(a=3,2,1)
C.
myfunc(3,b=2,1)
D.
myfunc(3,2,c=1)
试题编号:20230713-xm-005
试题类型:单选题
标准答案:D
24.
使用*args和**kwargs形参来定义函数时,正确的说法是?( )
A.
使用*args代表列表,使用**kwargs代表元组
B.
可以在调用函数时传入多个实参
C.
使用*args代表元组,使用**kwargs代表列表
D.
使用*args代表字典,使用**kwargs代表列表
试题编号:20230713-xm-006
试题类型:单选题
标准答案:B
25.
关于函数参数的默认值设置,描述不正确的是?( )
A.
定义函数时,可以为某形参设定默认值
B.
如果为某形参设定了默认值,则在调用函数时就不能再为该形参传入新值
C.
如果为某形参设定了默认值,在调用函数时还可以为该形参再传入新值
D.
关键字形参就是一种为参数设置默认值的方式
试题编号:20230713-xm-007
试题类型:单选题
标准答案:B
二、判断题(共10题,共20分)
26.
分治算法是把一个大问题分解为若干个规模较小、性质相同的子问题。最后子问题可以简单地直接求解,将所有子问题的解合并起来就是原问题的解。( )
正确
错误
试题编号:202306-zj-033
试题类型:判断题
标准答案:正确
27.
pip联网直接下载安装第三方库时,只能临时更换下载源,不能更改默认的下载源。( )
正确
错误
试题编号:20230615-fcl-033
试题类型:判断题
标准答案:错误
28.
运行以下代码的时间复杂度为O(n2)。( )
k=0
n=11
for i in range(n):
k=k+1
for j in range(n):
k=k+2
print(k)
正确
错误
试题编号:20230702-xyr-034
试题类型:判断题
标准答案:错误
29.
对于递归而言,递推与回归,二者缺一不可。( )
正确
错误
试题编号:20230704-TR-025
试题类型:判断题
标准答案:正确
30.
递归算法必须确保,需要解决的问题可以转化为一个或多个子问题来求解,这些子问题的求解方法与原问题相同,只是在数量和规模上不同,而且每次递归调用时,问题规模都能够缩小。( )
正确
错误
试题编号:20230704-TR-026
试题类型:判断题
标准答案:正确
31.
当函数运行结束后,局部变量的值依然存在,下次函数调用可以继续使用。( )
正确
错误
试题编号:20230710-cqf-14
试题类型:判断题
标准答案:错误
32.
内置函数不需要使用关键字import导入就可以使用,自定义函数可以先调用后定义。( )
正确
错误
试题编号:20230710-cqf-24
试题类型:判断题
标准答案:错误
33.
编程时,需要把实现复杂功能的代码封装起来,设计成函数。( )
正确
错误
试题编号:20230713-xm-026
试题类型:判断题
标准答案:错误
34.
将实现特定功能的代码块设计成函数,有助于提高整个程序的运行速度。( )
正确
错误
试题编号:20230713-xm-027
试题类型:判断题
标准答案:错误
35.
如果允许形参设置默认值,则函数定义时要先列出没有默认值的形参,再列出有默认值的形参。( )
正确
错误
试题编号:20230713-xm-028
试题类型:判断题
标准答案:正确
三、编程题(共3题,共30分)
36.
统计高分问题
小张在学习对分查找后,想利用该思路来实践一下,加深对该算法的理解。于是他按老师的要求,统计期末考试成绩,总分比他高的同学有多少个?
他的思路是,首先将全区所有学生的成绩降序排序,然后利用对分查找思想解决。他编写的代码如下,请完善划线处的代码。
cj =[654,643,621,612,609,606,...]#学生成绩存列表cj并已经降序排序
def dfsearch(key):
i =0; j=len(cj)-1
while i<=j:
m =(i+j)//2
if cj[m]>key:
①
else:
j-= 1
return ②
key = int(input('输入待查找的成绩'))
pos = ③
print('高于',key,'分的人数有',pos)
试题编号:202312-P4-36
试题类型:编程题
标准答案:
参考程序:
cj =[654,643,621,612,609,606,...]#学生成绩存列表cj并已经降序排序
def dfsearch(key):
i =0; j=len(cj)-1
while i<=j:
m =(i+j)//2
if cj[m]>key:
i +=1
else:
j-= 1
return i
key = int(input('输入待查找的成绩'))
pos = dfsearch(key)
print('高于',key,'分的人数有',pos)
37.
比岁数问题
有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。
最后问第一个人,他说是10岁。请问第五个人多大?
请运用递归算法完成以下代码。
def age(n):
if ① :
c = 10
else:
c = ②
return c
print(age( ③ ))
试题编号:202312-P4-37
试题类型:编程题
标准答案:
参考程序:
def age(n):
if n == 1:
c = 10
else:
c = age(n - 1) + 2
return c
print(age(5))
38.
数学证明问题
上世纪中期,校园里流行一种数学游戏,其规则十分简单:任意取一个自然数,若它是奇数,则把它乘以3加上1,若它是偶数,则除以2。按此规则进行下去,经过若干步的计算就能得到自然数1。这个数学现象至今都没有得到完全的证明,但是可以编程来验证它的正确性。
实现上述功能的部分程序代码如下,请补充完成空白处的内容。
step = 1
midlist = []
def subwork(n):
global step
if n == 1:
return step
elif n % 2 == 0:
n = ①
midlist. append(n)
step += 1
subwork( ② )
return step
elif n % 2 != 0:
n = ③
midlist. ④
step += 1
subwork( ⑤ )
return step
cur_num = int(input("请输入一个数字:"))
subwork(cur_num)
print(midlist)
print(step)
试题编号:202312-P4-38
试题类型:编程题
标准答案:
参考程序:
step = 1
midlist = []
def subwork(n):
global step
if n == 1:
return step
elif n % 2 == 0:
n = n / 2
midlist.append(n)
step += 1
subwork(n)
return step
elif n % 2 != 0:
n = n * 3 + 1
midlist.append(n)
step += 1
subwork(n)
return step
cur_num = int(input("请输入一个数字:"))
subwork(cur_num)
print(midlist)
print(step)
学科网(北京)股份有限公司
$$