万卷网> 电子学会考级 >Python等级考试 > 2021年3月电子学会青少年软件编程(Python四级)等级考试试卷

2021年3月电子学会青少年软件编程(Python四级)等级考试试卷
操作/编程 四级 2021 2022-10-29 17:24:27 101

一、编程题

1.

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

程序分析:对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))

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个人依次围成一圈玩游戏,从第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)

公众号
客服 反馈
顶部