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

2022年12月电子学会青少年软件编程(Python四级)等级考试试卷
操作/编程 四级 2022 2023-01-10 13:49:32 110

一、编程题

1.

从键盘接收一组不重复整数,并将这组整数按从小到大的顺序排列。

以下程序采取快速排序法对这组整数进行排序。

快速排序法的原理是:

(1)取这组数据中间那个数为锚定值mid;

(2)从这组数据开头往右找,遇到比mid大的数则停下,位置记为i;

(3)从这组数据末尾往左找,遇到比mid小的数则停下,位置记为j;

(4)如果此时i仍在j左边,即i<=j,则交换这两个数;

(5)重复(2)~(4)直到i、j重合;

(6)对i左边的数进行快速排序;

(7)对右边的数进行快速排序。

输入示例:

请输入需要排序的一组整数,数与数之间用空格隔开:6 10 11 8 4 1 9 7

输出示例:

排序结果:1 4 6 7 8 9 10 11

程序模板:

def QuickSort(left,right):

  if    ①    :

    return

  mid=Numbers[left+(right-left)//2]

  i=left

  j=right

  while i<j:

    while Numbers[i]<mid:

      i+=1

    while Numbers[j]>mid:

      j-=1

    if i<=j:

         ②     

    QuickSort(left,j-1)

    QuickSort(i+1,right)


Numbers=list(map(int,input("请输入需要排序的一组整数,数与数之间用空格隔开:").

     ③    ))

QuickSort(0,     ④    )

print("排序结果:",end="")

for i in Numbers:

  print(i,end=" ")

2.

鸡兔同笼是中国古代的数学名题之一。大约在1500年前,《孙子算经》中就记载了这个有趣的问题。书中是这样叙述的:

今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?

意思是:有若干只鸡兔同在一个笼子里(笼中最少有一只鸡和一只兔),从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?

今天我们用编程的方法来求解一下这道数学命题吧。

def ji_tu(head,leg):

  j=0

  t=0

  while j<head:

    j += 1

    t =     ①     

    if (leg==     ②     ):

      print('有鸡{}只,有兔子{}只。'.format(     ③    ))

  return (j,t)

while True:

  try:

    sum_head=int(input('请输入总头数:'))

    sum_leg=int(input('请输入总脚数:'))

    if     ④    :

      print('输入鸡和兔子的总头数或总脚数错误,请重新输入!')

    else:

      ji_tu(     ⑤     )

  except:

    print('能不能正常输入数据?')

3.

有一个游戏:有两个人,第一个人先从1和2中挑一个数字,第二个人可以在对方的基础上选择加1或者加2,然后又轮到第一个人,他也可以选择加1或者加2,之后再把选择权交给对方,就这样双方交替地选择加1或者加2,谁先加到20,谁就赢了。

在不考虑谁输谁赢的情况下,从一开始(以1或2为起点)加到20,有多少种不同的递加过程?比如1,4,7,10,12,15,18,20算一种;2,5,8,11,14,17,20又是一种。那么一共会有多少种这样的过程呢?我们可以用递归算法来解决这个问题,请补全代码。

def guo_cheng(n):

  if     ①     :

    return 1

  return     ②     

# 输出所有过程的个数

print (guo_cheng(     ③     ))

公众号
客服 反馈
顶部