青少年软件编程(Python)等级考试试卷(四级)
分数:100  题数:38
一、单选题(共25题,每题2分,共50分)
1.
对自然数1至n求和,如果将递推式f(n)=f(n-1)+n(n>1)转化成递归函数,则
递归出口是?( )
 
A. 
f(1)=1
B. 
f(1)=0
C. 
f(0)=1
D. 
f(0)=0
试题编号:20210206-xm-019
试题类型:单选题
标准答案:A
试题难度:较难
试题解析:
2.
对比两个求等差数列1+2+…+n的和的程序,其算法效率?( )
程序1:
n=int(input())
s=(1+n)*n/2
print(s)
程序2:
n=int(input())
s=0
for i in range(n+1):
    s=s+i
print(s)
 
A. 
程序1比程序2高
B. 
程序2比程序1高
C. 
一样高
D. 
不能判断
试题编号:20210205-ppz-023
试题类型:单选题
标准答案:A
试题难度:一般
试题解析:理解算法性能、算法效率概念
3.
若以下程序段的运行结果为“*#*#*”,则空格   (1)      (2)   处填
写结果不可能为?( )
def f(n):
    s=""
    for i in range(     (1)     ,n):
        if i % 2==1:
            s=s+"*"
        else:
            s=s+"#"
    return s
print(f(     (2)     ))
 
A. 
3,8
B. 
3,7
C. 
9,14
D. 
1,6
试题编号:20210130-lfy-012
试题类型:单选题
标准答案:B
试题难度:容易
试题解析:当变量i为奇数时,s累计符号“*”,所以range函数的初始值为奇
数,又因为总共输出了5个符号,所以range函数的终值为初始值+5。
4.
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子。假如兔子都不死,要求输出一年内兔子的数量是多少。如果采用递归算法来编程,则核心的递归逻辑应该是?( )
 
A. 
f(n) =n*f(n-1)
B. 
f(n) = f(n-1)+n
C. 
f(n) = f(n-1)+f(n-2)
D. 
f(n) = f(n-1)+ (n-1)f(n-2)
试题编号:20210206-xm-022
试题类型:单选题
标准答案:C
试题难度:较难
试题解析:只有C是符合题意的递推式。
5.
下列程序使用了哪种算法?( )
def fact(n):
    if n==0:
        return 1
    else:
        return n*fact(n-1)
 
A. 
递推
B. 
递归
C. 
排序
D. 
分治
试题编号:20210128-CJ-019
试题类型:单选题
标准答案:B
试题难度:一般
试题解析:
6.
以下几项关于函数的说法,错误的是?( )
 
A. 
函数是一段具有特定功能的语句组
四级考试分数分配
B. 
调用函数时,参数传入的顺序必须与定义时保持一致
C. 
在一个程序中,函数的定义可以放在函数调用代码之后
D. 
使用函数可以增加代码重复利用率,还可以降低维护难度
试题编号:20210129-TR-001
试题类型:单选题
标准答案:C
试题难度:一般
试题解析:函数是一段具有特定功能的语句组,使用函数能够提高代码的重复利
用率,降低维护难度;调用函数时,参数传入的数量、顺序必须与定义时一致;函
数必须定义在前,才可以调用。
7.
下面关于递归的描述不正确的是?( )
 
A. 
递归思想是将大型复杂的问题转化为一个与原问题相似的规模较小的问题来求解
B. 
递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,它
不是分治策略的具体体现
C. 
递归必须有终止递归的条件
D. 
递归是在过程或函数里调用自身
试题编号:20210203-fcl-03
试题类型:单选题
标准答案:B
试题难度:一般
试题解析:递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,
它是分治策略的具体体现
8.
下列哪项不是分治算法所具有的特征?( )
 
A. 
该问题的规模缩小到一定的程度就可以容易地解决
B. 
该问题可以分解为若干个规模较小的不同问题
C. 
利用该问题分解出的子问题的解可以合并为该问题的解
D. 
该问题所分解出的各个子问题是相互独立的
试题编号:20210128-CJ-027
试题类型:单选题
标准答案:B
试题难度:较难
试题解析:
9.
以下能正确计算出“1!+3!+5!”值(n!=1x2x3…xn)的自定义函数是?( )
 
A. 
def f():
    s=0
    t=1
    for i in range(1,6,2):
        t=t*i
        s=s+t
    return s
B. 
def f():
    s=0
    t=0
    for i in range(1,6,2):
        t=t*i
        s=s+t
    return s
C. 
def f():
    s=0
    t=1
    for i in range(1,6,2):
        t=t*i
        if i%2==1:
            s=s+t
    return s
D. 
def f():
    s=0
    t=1
    for i in range(1,6):
        t=t*i
        if i%2==1:
           s=s+t
    return s
试题编号:20210206-lfy-014
试题类型:单选题
标准答案:D
试题难度:较难
试题解析:A选项和C选项求的是1*1+1*1*3+1*1*3*5的值;B选项由于t=0,乘
以任何数都等于0,所以最终结果为0。