202103 青少年软件编程等级考试Python四级真题 建议答题时长:60min
1. 编程题

现有n个人依次围成一圈玩游戏,从第1个人开始报数,数到第m个人出局,然后从出局的下一个人开始报数,数到第m个人又出局,...,如此反复到只剩下最后一个是胜利者。设n个人的编号分别为1,2,...,n,打印出局的顺序。

根据上述算法思想,补全下列代码。

输入输出示例:当n=10,m=4,输出如下:

出局的人是: 4

出局的人是: 8

出局的人是: 2

出局的人是: 7

出局的人是: 3

出局的人是: 10

出局的人是: 9

出局的人是: 1

出局的人是: 6

最后胜利者是: 5

 

def fun(n,k):

    L = list(    )

    if n == 1:

        return

    else:

        x = 0

        for i in     

            x =      - 1

            print('出局的人是:',L[x])

            del L[x]

            if x < 0:

                x = 0

        print('最后胜利者是:',     )

fun(10,4)

查看答案
2. 编程题

利用分治思想,给定一个顺序表,编写一个求出其最大值的程序。

根据上述算法思想,补全下列代码。

输入输出示例:当顺序表是 [22,13,34,4,68,15,5,58,36],输出:68

def fun_max(num=list):

    return max(num)

def fun(num):

    n =     

    if n <= 2:

        return     

    l_list, r_list = num[:n//2], num[n//2:]

    l_max, r_max =       

    return fun_max(      )

if __name__ == "__main__":

    alist = [22,13,34,4,68,15,5,58,36]

    print(fun(alist))

查看答案
3. 编程题

设计一个算法,将一个正整数分解质因数。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

                    (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,输出即可。

                    (2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。

                    (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

根据上述算法思想,补全下列代码。

输入输出示例:当n=105,输出:105= 3*5*7

                      当n=60,输出:60= 2*2*3*5 

def fun(n):

    print('%d='%n,end=' ')

    for i in      :

        while n!=i:

            if n>i and      :

                print(i,end='*')

                    

            else:

                break

        else:

                 

            break

if __name__ == "__main__":

    while True:

        num=input("输入一个正整数:")

        if not num.isdigit():

            break

        fun(int(num))

查看答案
4. 单选题

下列关于递归的描述不正确的是?

A

递归函数一定包含条件控制语句

B

递归函数一定包含调用自身的语句

C

在调用自身函数时需要明确的边界终止条件

D

递归算法一般代码简洁,执行效率高,空间复杂度低

5. 单选题

关于python函数参数的说法正确的是?

A

函数一定要有参数和返回值

B

在调用一个函数时,若函数中修改了形参变量的值,则对应的实参变量的值也被修改

C

参数的值是否会改变,与函数中对变量的操作有关,与参数类型无关

D

函数的形参在函数被调用时获得初始值

6. 单选题

下列关于函数的描述正确的是?

A

函数是可重复使用的,用来实现单一,或相关联功能的代码段

B

函数中必须return语句

C

函数好处是模块性,但不能提高代码的利用率

D

函数内容以冒号起始,可以不缩进

7. 单选题

运行以下代码,正确的打印结果是?( )

def f():

    c=0

    for i in range(4,51,4):

        if i%6==0:

            c=c+1

    return c

print(f())

A

1

B

2

C

4

D

8

8. 单选题

关于函数的定义语句,以下几项中正确的是?

A

def f(c=2,a,b):

B

def f(a,b=2,c):

C

def f(*c,**d,a,b):

D

def f(a,b,*c,**d):

9. 单选题

运行以下代码,输出结果正确的是?( )

a=1

b=c=[]

def fun(a,c):

    a=2

    c.append(a)

fun(a,c)

print(a,b,c)

A

2 [2] [2]

B

1 [] [2]

C

1 [2] [2]

D

2 [] [2]

10. 单选题

在Python程序中,设已定义函数op,它有一个整型传值参数,一个字符串型传值参数。设x,y为整型变量,z为字符串型变量,则下列能调用该函数的正确语句是?

A

op

B

op(x,y,z)

C

op x,y

D

op(x+y,z)

11. 单选题

不超过100个元素的有序数列,使用二分查找能找到指定的元素,可能的查找次数不包括?

A

1次

B

6次

C

7次

D

8次

12. 单选题

某程序代码设计如下,若输入整数5,则最终输出的结果为?( )

def fact(x):

    if x==1:

        s=1

    else:

        s=fact(x-1)*x

    return s

n=int(input("请输入一个大于1的整数:"))

print(fact(n)+fact(n-1))

A

120

B

24120

C

144

D

12024

13. 单选题

如果需要在某函数内部调用上一层的局部变量,则可以使用(   )关键字。

A

Local

B

nonlocal

C

global

D

nonglobal

14. 单选题

下列哪个不是Python中的内建函数?

A

asc(x)

B

ord(x)

C

chr(x)

D

abs(x)

15. 单选题

有100枚金币,其中有1枚轻1克的假金币,现在要找出这枚假金币,但身边只有1个没有刻度的天秤。小明先是将金币分成50枚一堆,共两堆称重,在轻的那一堆中又分成两堆,接着在轻的25枚中分成12,12,1三堆称重,若两堆12枚的重量相同,则假币为单独剩下的那一枚,否则在轻的那一堆中继续按照之前的办法称下去,直到找到假金币。请问小明采用的办法与哪个算法有着相似之处?

A

递归

B

分治

C

枚举

D

贪心

16. 单选题

运行下列程序,输出结果正确的是?( )

def fun(x,y=5):

    return x*y

a=fun(10,10)

print(a)

A

100

B

50

C

10

D

运行出错

17. 单选题

观察程序段,以下说法错误的是?( )

def fib(n):

    if n==1 or n==2:

        s=1

    else:

        s=fib(n-1)+fib(n-2)

    return s

m=int(input("请输入m的值(m>2):"))

print(fib(m))

A

如果输入m的值为8,打印的结果为20

B

该程序段用了递归来实现

C

如果缺少语句“return s”,程序会报错

D

语句“def fib(n):”中的n为形参

18. 单选题

10个人站一列,分苹果,问第10个人分到多少个苹果,他说比前面一个人多分到2个,依次往前,都说比前面一个人多分到2个,最后问第一个人,他说分到10个苹果。用以下函数求第10个人分到的苹果数,则应补充选项为?( )

def  apple(n):

     if n == 1:

         return 10

     else:

         return                   

print(apple(10))

A

apple(n)+2

B

n+2

C

apple(n-1)+2

D

apple(n+1)-2

19. 单选题

已知有n本按照书名拼音排序好的图书,使用对分查找法搜索其中任何一本书,最多查找次数为6次,则n的值可能为?

A

20

B

50

C

80

D

110

20. 单选题

关于Turtle库的表述中,错误的是?

A

Turtle库是Python语言中一个很流行的绘制图像的函数库。

B

画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。

C

turtle.circle( )是只能画一个指定半径为r的圆。

D

turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。

21. 单选题

下列哪个语句段的时间复杂度最低?

A

B

C

D

22. 单选题

用匿名函数方式求两个数中较大的数,下列定义语句格式正确的是?

A

result = lambda 'x,y': y if x> y else x

B

result= lambda x,y: y if x> y else x

C

result= lambda 'x,y': x if x> y else y

D

result= lambda x,y: x if x> y else y

23. 单选题

下列哪个不是Python第三方库的pip安装方法?

A

使用pip命令

B

使用wheel命令

C

集成安装方法

D

文件安装方法

24. 单选题

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

F(n)=F(n-1)+3    F(1)=2

A

2

B

5

C

11

D

14

25. 单选题

运行以下代码,正确的打印结果是?( )

def f(s):

    t=0

    max=0

    for i in s:

        if i>="0" and i<="9":

            t=t+1

        else:

            if t>max:

                max=t

            t=0

    print(max)

list="123ab45cd6d"

f(list)

A

0

B

1

C

2

D

3

26. 单选题

调用以下函数时,语句“s=s+i”被执行的次数是?( )

def f():

    s=0

    i=1

    while i<10:

        if i%3==0 or s%2==1:

            s=s+i

        i=i+1

    print(s)

A

3

B

4

C

5

D

6

27. 单选题

关于递归与递推方法的比较,错误的观点是?

A

递归是将复杂问题降解成若干个子问题,依次降解,求出低阶规模的解,代入高阶问题中,直至求出原问题的解;

B

递推是构造低阶的问题,并求出解,依次推导出高阶的问题以及解,直至求出问题的解;

C

数学上的递推关系可以通过递归的方法来实现;

D

递归算法代码简洁,运行速度比递推快,因此应该尽量采用递归的方法;

28. 单选题

下列程序段的正确运行结果是?( )

def fun(m,n):

    while m!=n:

        if m>n:

            m=m-n

        else:

            n=n-m

    return m

print(fun(24,16))

A

4

B

8

C

-8

D

2

29. 判断题

在python函数中,局部变量不能与全局变量重名。

A

正确

B

错误

30. 判断题

使用python -m pip install --upgrade pip命令能够升级pip。

A

正确

B

错误

31. 判断题

已有函数def demo(*p):return sum(p),表达式 demo(1, 2, 3, 4) 的值为10。

A

正确

B

错误

32. 判断题

下列程序段能正确打印1。

def f(a,b):

    a=a+b

    b=a-b

    a=a-b

    return b

print(F(1,4))

A

正确

B

错误

33. 判断题

下列程序段返回的值为“Hello!Python”。

lst="Hello!Python"

def f():

    global lst

    lst="Hello!"

    return lst

f()

print(lst)

A

正确

B

错误

34. 判断题

设计一个程序来求xn(x的几次方)的值,算法思想是:把xn转换为x*xn-1,而xn-1又可以转换为x*xn-2,如此重复下去,直到x*x0,而x0=1,从而求出了xn的值。这个程序可以用递归来实现。

A

正确

B

错误

35. 判断题

sum=0

for i in range(5):

    sum=sum+i

print(sum)

运行以上程序,输出结果是15。

A

正确

B

错误

36. 判断题

算法复杂度分析的目的是分析算法的效率,以求改进。

A

正确

B

错误

37. 判断题

使用分治算法求解,子问题不能重复。

A

正确

B

错误

38. 判断题

def add(a, b, c=0):

    return a+b+c

print(add(1, 2, 4))

这段程序的运行结果为3。

A

正确

B

错误

试题目录
编程题
1 2 3
单选题
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
判断题
29 30 31 32 33 34 35 36 37 38
赣ICP备20007335号-2