2023年12月青少年软件编程Python等级考试(四级)真题试卷
剩余时间 --:--:--
单选题 共 25 题
1.

下列有关分治算法思想的描述不正确的是?( )

2.

斐波那契数列前n项是1,1,2,3,5,8,13......

补全下面程序代码,求第n项斐波那契数列的值。

def fib(n):
    if ______:
        return 1
    else:
        return fib(n-1) + fib(n-2)
3.

用分治法求两个数的最大公约数,代码和运行结果如下,请选择合适的代码完成程序?( )

def fun(m, n):
    if m % n == 0:
        return n
    else:
        return __________
print(fun(98, 56))


程序运行结果如下:
14

4.

列出第三方库的详细信息的pip指令是?( )

5.

想要在Python中导入math模块中的sqrt(x)函数,下列程序段错误的是?( )

6.

关于求解“找出所有满足各位数字之和等于8的三位数”时,在下列数值范围内,算法执行效率最高的是?

7.

已知,从1到n的连续自然数相乘的积叫做阶乘,用符号n!表示,比如3!=1×2×3,规定0!=1。那么用递归算法求n的阶乘,递归式正确的是?( )

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))
9.

下列程序中,当n=4时,返回结果为?( )

def x(n):
       if  n==1:
              return 1
       else:
              return n+x(n-1)
10.

下列选项中,不属于递归特性的是?( )

11.

对于下列递归式子,当n=4时,F的值是?( )
F(n)=F(n-1)*2
F(1)=2

12.

下面函数实现的功能是?( )

def   mi(x, n):
    if   n == 0:
          return  1
    else:
          return  x*mi(x, n-1)
13.
def afun(n):
    s=1
    for i in range(1,n+1):
        s*=i
    return s

对以上代码解释错误的是?( )

14.

关于下列代码解释错误的一项是?( )

def ZhongYao(a:str,b:int)->str:
    word=a*b
    print('重要的事情说{}遍:{}'.format(b,word))
    return ZhongYao
ZhongYao('学习','3')
15.

列代码的运行结果是?( )

def exchange(a,b):
    a,b=b,a
    print(a,b)
a,b=3,5
exchange(a,b)
print(a,b)
16.

下列代码的运行结果是?( )

def car_show(cars):
    for car in cars:
        print('good',car)
car_show(['BYD','Haval','Wuling'])
17.

函数中定义了4个参数,其中2个参数都指定了默认值,见下面代码,那么在调用函数时参数个数最少是?( )

def SiBianXing(a,b,c=5,d=8):
    ZhouChang=a+b+c+d
    return ZhouChang
SiBianXing( ? )
18.

执行如下程序,以下选项中哪一项是错误的?( )

def f(a,b): 
    c=a+b*2
    b=a
    return c 
a=1 
b=2
c=f(a,b)+b

19.

以下哪种情况下的代码块适合设计成函数?( )

20.

使用位置实参的方式调用函数时,下列哪种情况下程序一定会出错?( )

21.

下列函数定义中,正确的是?( )

22.

调用函数的时候,所使用的参数是?( )

23.

对于如下自定义的函数:

 def myfunc(a,b,c):

     return a+b+c 

以下调用该函数的语句中,能正确执行的是?( )

24.

使用*args和**kwargs形参来定义函数时,正确的说法是?( )

25.

关于函数参数的默认值设置,描述不正确的是?( )

判断题 共 10 题
1.

分治算法是把一个大问题分解为若干个规模较小、性质相同的子问题。最后子问题可以简单地直接求解,将所有子问题的解合并起来就是原问题的解。( )

2.

pip联网直接下载安装第三方库时,只能临时更换下载源,不能更改默认的下载源。( )

3.

运行以下代码的时间复杂度为O(n2)。( )

k=0
n=11
for i in range(n):
    k=k+1
for j in range(n):    
    k=k+2
print(k

4.

对于递归而言,递推与回归,二者缺一不可。( )

5.

递归算法必须确保,需要解决的问题可以转化为一个或多个子问题来求解,这些子问题的求解方法与原问题相同,只是在数量和规模上不同,而且每次递归调用时,问题规模都能够缩小。( )

6.

当函数运行结束后,局部变量的值依然存在,下次函数调用可以继续使用。( )

7.

内置函数不需要使用关键字import导入就可以使用,自定义函数可以先调用后定义。( )

8.

编程时,需要把实现复杂功能的代码封装起来,设计成函数。( )

9.

将实现特定功能的代码块设计成函数,有助于提高整个程序的运行速度。( )

10.

如果允许形参设置默认值,则函数定义时要先列出没有默认值的形参,再列出有默认值的形参。( )

问答题 共 3 题
1.

统计高分问题

小张在学习对分查找后,想利用该思路来实践一下,加深对该算法的理解。于是他按老师的要求,统计期末考试成绩,总分比他高的同学有多少个?

他的思路是,首先将全区所有学生的成绩降序排序,然后利用对分查找思想解决。他编写的代码如下,请完善划线处的代码。

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)

2.

比岁数问题

有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。

最后问第一个人,他说是10岁。请问第五个人多大?
请运用递归算法完成以下代码。
def age(n):
    if                 :
        c = 10
    else:
        c =                
    return c
print(age(                ))

3.

数学证明问题

上世纪中期,校园里流行一种数学游戏,其规则十分简单:任意取一个自然数,若它是奇数,则把它乘以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)

C++ 编辑器
输入
输出