全国青少年软件编程等级考试四级(Python)模拟卷(一)
一、选择题(每题3分,共30分)
1.以下关于函数的说法,错误的是()
A.函数定义使用`def`关键字
B.函数可以有返回值,也可以没有
C.函数参数必须有默认值
D.函数可以调用其他函数
2.下列哪个选项是正确的函数定义?()
A.`functionadd(a,b):`
B.`defadda,b:`
C.`defadd(a,b):`
D.`defadd(a;b):`
3.执行以下代码,输出结果是()
defgreet(name):returnHello,+nameprint(greet(Python))
A.`Hello,Python`
B.`Hello,Python`
C.`Hello,Python\n`
D.报错
4.以下关于递归函数的说法,正确的是()
A.递归函数不需要终止条件
B.递归函数会一直调用自身,直到程序崩溃
C.递归函数的终止条件可以避免无限递归
D.递归函数比非递归函数效率更高
5.执行以下代码,输出结果是()
deffactorial(n):ifn==0:return1else:returnn*factorial(n-1)print(factorial(5))
A.120
B.15
C.5
D.0
6.下列哪个算法属于分治算法?()
A.冒泡排序
B.快速排序
C.插入排序
D.选择排序
7.以下关于变量作用域的说法,错误的是()
A.在函数内部定义的变量是局部变量
B.在函数外部定义的变量是全局变量
C.局部变量可以在函数外部访问
D.全局变量可以在函数内部访问
8.执行以下代码,输出结果是()
x=10deffunc():x=5print(x)func()print(x)
A.510
B.105
C.55
D.1010
9.以下哪个选项可以将递归算法转换为递推算法?()
A.使用循环替代递归调用
B.使用条件判断替代递归调用
C.使用列表替代递归调用
D.无法转换
10.下列关于算法效率的说法,正确的是()
A.算法效率只与算法的时间复杂度有关
B.算法效率只与算法的空间复杂度有关
C.算法效率与算法的时间复杂度和空间复杂度都有关
D.算法效率与算法的时间复杂度和空间复杂度都无关
二、判断题(每题2分,共20分)
1.函数可以提高代码的复用性。()
2.函数参数可以有默认值,也可以没有。()
3.递归函数必须有终止条件。()
4.分治算法的基本思想是将问题分解为多个子问题,然后合并子问题的解。()
5.局部变量和全局变量可以同名,在函数内部访问的是全局变量。()
6.递推算法比递归算法更节省内存。()
7.函数的返回值只能有一个。()
8.可以使用`return`语句返回多个值。()
9.算法的时间复杂度是指算法执行所需的时间。()
10.算法的空间复杂度是指算法执行所需的内存空间。()
三、编程题(共50分)
1.自定义函数(10分)
题目描述:编写一个函数`sum_numbers(n)`,计算从1到n的所有整数的和,并返回结果。
示例:
输入:
5
输出:
15
2.递归函数(15分)
题目描述:编写一个递归函数`fibonacci(n)`,计算第n个斐波那契数,并返回结果。斐波那契数列的前几项为:1,1,2,3,5,8,13,...
示例:
输入:
6
输出:
8
3.递推算法(15分)
题目描述:使用递推算法重新实现斐波那契数列的计算,编写函数`fibonacci_iterative(n)`,计算第n个斐波那契数,并返回结果。
示例:
输入:
6
输出:
8
4.分治算法应用(10分)
题目描述:使用分治算法实现二分查找。编写函数`binary_search(arr,target)`,在有序数组`arr`中查找目标值`target`,如果找到则返回其索引,否则返回-1。
示例:
输入:
[1,3,5,7,9],5
输出:
2
参考答案
一、选择题
1.?C
解析:函数参数可以没有默认值,调用时必须传入足够的参数。
2.?C
解析:函数定义使用`def`关键字,参数用逗号分隔,括号后加冒号。
3.?A
解析:函数`greet`返回字符串`Hello,Python`,`print`函数输出该字符串。
4.?C
解析:递归函数必须有终止条件,否则会无限递归导致程序崩溃。
5.?A
解析:`factorial(5)`计算5的阶乘,即$5×4×3