2023年12月CCF-GESP编程能力等级认证Python编程五级真题

2024年03月06日

一、单选题(共15题,共30分)

第1题 通讯卫星在通信网络系统中主要起到( )的作用。

A:信息过滤
B:信号中继
C:避免攻击
D:数据加密

答案:B

第2题 小杨想编写一个判断任意输入的整数N是否为素数的程序,下面哪个方法不合适?( )

A:埃氏筛法
B:线性筛法
C:二分答案
D:枚举法

答案:C

第3题 内排序有不同的类别,下面哪种排序算法和冒泡排序是同一类?( )

A:希尔排序
B:快速排序
C:堆排序
D:插入排序

答案:B

第4题 下面Python代码用于求斐波那契数列,该数列第1、2项为1,以后各项均是前两项之和。下面有关说法错误的是( )。

A:fiboA( ) 用递归方式, fiboB() 循环方式
B:fiboA( ) 更加符合斐波那契数列的数学定义,直观易于理解,而 fiboB() 需要将数学定义转换为计算机程序实现
C:fiboA( ) 不仅仅更加符合数学定义,直观易于理解,且因代码量较少执行效率更高
D:fiboB( ) 虽然代码量有所增加,但其执行效率更高

答案:C

第5题 下面Python代码以递归方式实现合并排序,并假设 merge(left,right) 函数能对有序(同样排序规则)的left 和 right 排序。横线处应填上代码是( )。

A:mergeSort(listData[:Middle]), mergeSort(listData[Middle:])
B:mergeSort(listData[:Middle-1]), mergeSort(listData[Middle+1:])
C:mergeSort(listData[:Middle]), mergeSort(listData[Middle+1:])
D:mergeSort(listData[:Middle-1]), mergeSort(listData[Middle:])

答案:A

第6题 阅读下面的Python代码,执行后其输出是( )。

A:1->120<===>2->120
B:1->120<===>1->120
C:1->120<===>1->2->3->4->5->120
D:1->120<===>2->3->4->5->6->120

答案:D

第7题 下面的Python用于对 lstA 排序,使得偶数在前奇数在后,横线处不应填入( )。

A:key = not isEven
B:key = lambda x: isEven(x), reverse = True
C:key = isEven, reverse = True
D:key = lambda x: not isEven(x)

答案:A

第8题 下面的Python代码用于排序 sA 字符串中每个字符出现的次数(字频), sA 字符串可能很长,此处仅为示例。排序要求是按字频降序,如果字频相同则按字符的ASCII升序,横线处应填入代码是( )。

A:charCount, key = lambda x:(-x[1],x[0])
B:charCount.items(), key = lambda x:(-x[1],ord(x[0]))
C:charCount.items(), key = lambda x:(x[1],-ord(x[0]))
D:触发异常,不能对字典进行排序。

答案:B

第9题 有关下面Python代码正确的是( )。

A:True True False
B:False True False
C:False False True
D:触发异常

答案:A

第10题 下面的Python代码实现对 list 的快速排序,有关说法,错误的是( )。

A:qSort(less) + qSort(greater) + [pivot]
B:[pivot] + qSort(less) + qSort(greater)
C:qSort(less) + [pivot] + qSort(greater)
D:qSort(less) + pivot + qSort(greater)

答案:C

第11题 下面Python代码中的 isPrimeA() 和 isPrimeB() 都用于判断参数N是否素数,有关其时间复杂度的正确说法是( )。

A:isPrimeA( ) 的最坏时间复杂度是 , isPrimeB( ) 的最坏时间复杂度是 ,isPrimeA()优于isPrimeB()
B:isPrimeA() 的最坏时间复杂度是 , isPrimeB( ) 的最坏时间复杂度是 ,isPrimeB()绝大多数情况下优于isPrimeA()
C:isPrimeA() 的最坏时间复杂度是 , isPrimeB( ) 的最坏时间复杂度是 , isPrimeA( ) 优于isPrimeB( )
D:isPrimeA() 的最坏时间复杂度是 , isPrimeB( ) 的最坏时间复杂度是 ,isPrimeA()优于isPrimeB( )

答案:B

第12题 下面Python代码用于有序 list 的二分查找,有关说法错误的是( )。

A:代码采用二分法实现有序list的查找
B:代码采用分治算法实现有序list的查找
C:代码采用递归方式实现有序list的查找
D:代码采用动态规划算法实现有序list的查找

答案:D

第13题 在上题的算法中,其时间复杂度是( )。

A:O(N)
B:O(logN)
C:O(NlogN)
D:O(N^2)

答案:B

第14题 下面的Python代码用于实现每个字符后紧跟随字符及其出现次数,并对紧跟随字符排序,即出现次数最多排在前,形如: {‘中’: [(‘文’, 1), (‘国’, 2), (‘华’, 2)]} ,此处 S 仅是部分字符,可能很多,横线处应填入代码是( )。

A:x[0]:x[1].items().sort(key = lambda x:x[1], reverse = True)
B:x[0]:x[1].items().sort(key = lambda x:x[0], reverse = True)
C:x[0]:sorted(x[1].items(), key = lambda x:-x[0])
D:x[0]:sorted(x[1].items(), key = lambda x:-x[1])

答案:D

第15题 有关下面Python代码的说法正确的是( )。

A:上述代码构成单向链表
B:上述代码构成双向链表
C:上述代码构成循环链表
D:上述代码构成指针链表

答案:B

二、判断题(共10题,共20分)

第16题 小杨想写一个程序来算出正整数N有多少个因数,经过思考他写出了一个重复没有超过N/2次的循环就能够算出来了。( )

答案:正确

第17题 同样的整数序列分别保存在单链表和双向链中,这两种链表上的简单冒泡排序的复杂度相同。( )

答案:正确

第18题 归并排序的时间复杂度是 。( )

答案:正确

第19题 在Python中,当对 list 类型进行 in 运算查找元素是否存在时,其查找通常采用二分法。( )

答案:错误

第20题 以下Python代码能以递归方式实现斐波那契数列,该数列第1、2项为1,以后各项均是前两项之和。( )

答案:错误

第21题 贪心算法可以达到局部最优,但可能不是全局最优解。 ( )

答案:正确

第22题 如果自定已class已经定义了 __lt__() 魔术方法,则自动支持内置函数 sorted() 。( )

答案:正确

第23题 插入排序有时比快速排序时间复杂度更低。( )

答案:正确

第24题 下面的Python代码能实现十进制正整数N转换为八进制并输出。( )

答案:错误

第25题 Python代码 print(sorted(list(range(10)), key = lambda x:x % 5)) 执行后将输出 [0, 5, 1,6, 2, 7, 3, 8, 4, 9] 。( )

答案:正确

三、编程题(共2题,共50分)

第26题 小杨的幸运数

第27题 烹饪问题