P4-2109 青少年软件编程(Python)等级考试试卷(四级)
分数:100.00 题数:38
您的姓名: [填空题] *
_________________________________
一、单选题 (共25题,每题2分,共50分)
1.对于数列3,8,11,15,17,19,25,30,44,采用“二分查”法查8,需要查多少次?() [单选题] *
A、5
B、4
C、3
D、2(正确答案)
答案解析:按二分查法的规律,每次先查中间值,进行比较。
2.下面哪一项不是pip指令?() [单选题] *
A、pip install Scipy
B、pip uninstall Jieba
C、pip clear(正确答案)
D、pip list
答案解析:pip工具中没有clear方法。
3.有如下Python语句,执行该语句后,结果是?()
f=lambda x:5
print(f(3)) [单选题] *
A、3
B、没有输出
C、5(正确答案)
D、None
答案解析:将参数3传递给匿名函数f,返回值为5,故选C
4 执行如下Python代码后,结果是?()
def inverse(s,n=0):
    while s:
        n=n*10+s%10
        s=s//10
    return n
print(inverse(456,123)) [单选题] *
A、654123
B、123456
C、123654(正确答案)
D、654321
答案解析:调用函数inverse(456,123),将456逐位取出,并累加到123的后面,故选C
5.下列有关循环和递归的描述正确的是?() [单选题] *
A、递归思想代码清晰简洁,可读性强(正确答案)
B、递归代码中不能有循环结构的语句
C、递归是从问题的起点出发,逐渐将复杂问题化为简单问题,最终求得问题
D、能用递归实现的,一定能用循环代码实现
答案解析:递归是从问题的目标出发,逐渐将复杂问题化为简单问题,最终求得问题
6.以下有关Python函数的定义表述中错误的是?() [单选题] *
A、函数的定义必须在主程序调用语句之前出现
B、在形参列表中必须先列出有默认值的形参,再列出没有默认值的形参(正确答案)
C、实参是实际占用内存地址的,而形参不占用
D、def关键字后面加函数名定义函数,定义必须以冒号结尾
答案解析:在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参。
7.如下代码运行后下面选项中描述错误的是?()
def pph(a,b):
    c=a**2+b
    b=a
    return c
a=10
b=100
c=pph(a,b)+a
print(a,'',b,'',c) [单选题] *
A、执行该函数后,变量a的值为10
B、执行该函数后,变量b的值为100
C、执行该函数后,变量c的值为200(正确答案)
D、该函数名称为pph
答案解析:函数基本概念
8.阅读下列程序段,数列的第6项值为多少?()
def fibona(x):
    if x==1 or x==2:
        f=1
    for i in range(3,x+1):
        f=fibona(x-1)+fibona(x-2)
    return f
n=int(input("请输入数列第几项:“))
m=fibona(n)
print("数列的第"+str(n)+“项的值为"+str(m)) [单选题] *
A、1
B、8四级考试分数分配(正确答案)
C、21
D、34
答案解析:程序段中的数列其实是斐波那契数列,这个数列从第3项开始,每一项都等于前两项之和。1,1,2,3,5,8,13,21,34,55..
9. 有如下Python的自定义函数,执行该程序后,结果是?()
def calc(x.y,op):
    return eval(str(x)+op+str(y))
print(calc(3,5,'+’)) [单选题] *
A、8(正确答案)
B、35
C、None
D、-2
答案解析:该函数功能是将参数x.y用op的运算符运算,故选A
10.有如下Python程序,执行该程序后,结果是?()
x=3
def calc():
    x=5
print(calc()) [单选题] *
A、3
B、5
C、无输出
D、None(正确答案)
答案解析:自定义函数没有return 语句,返回值为None,故选D
11.应用分治算法的前提是?() [单选题] *
A、问题的可分性和解的可归并性(正确答案)
B、问题的复杂性和解的简单性
C、问题的可分性和解的存在性
D、问题的复杂性和解的可归并性
答案解析:A。问题的可分性和解的可归并性是应用分治算法的前提。
12.有一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第10次落地前,反弹多高?用递归函数解决,下面选项正确的是?()
A、
def height(n):
    if n == 1:
        return 100
    else:
        return n*2
print(height(10))
B、
def height(n):
    if n == 1:
         return 100
    else:
         return height(n-1)/2
print(height(10))
C、
def height(n):
    if n==1:
        return 100
    else:
        return height(n+1)/2
print(height(10))
D、
def height(n):
    if n==1:
        return 100
    else:
        return height(n-1)*2
print(height(10)) [单选题] *
A
B(正确答案)
C
D
答案解析:每次弹起的高度都是上次的一半,因此递归式子为height(n-1)/2