万卷网> GESP认证 >Python > 2025年9月CCF—GESP(Python五级)编程能力等级认证试卷

2025年9月CCF—GESP(Python五级)编程能力等级认证试卷
五级 2025 2026-07-13 14:17:15 99

一、单选题

1.

下面的代码实现埃拉托斯特尼筛法(埃氏筛),横线处应填入( )。

A.

i

B.

i+1

C.

i*2

D.

i*i

2.

唯一分解定理描述的是()。

A.

每个整数都能表示为任意素数的乘积

B.

每个大于 1 的整数能唯一分解为素数幂乘积(忽略顺序)

C.

合数不能分解为素数乘积

D.

素数只有两个因子:1 和自身

3.

下列python代码用Floyd判断一个单链表中是否存在环,链表的头节点为 head ,即用两个指针在链表上前进: slow 每次走 1 步, fast 每次走 2 步,若存在环, fast 终会追上 slow (相遇);若无环, fast 会先到达 nullptr。横线上应填写( )。

A.

B.

C.

D.

4.

下列代码用于判断一个数是否为完全数(即等于它的真因子之和的数,如6=1+2+3),哪个选项是正确的实现?

A.

if i != n / i:

B.

if i != n // i:

C.

if i = n // i:

D.

if i == n // i:

5.

给定一个 n x n 的矩阵 matrix ,矩阵的每一行和每一列都按升序排列。下面代码返回矩阵中第 k 小的元素,则两处横线上应分别填写( )。

A.

B.

C.

D.

6.

给定一个由非负整数组成的数组 digits ,表示一个非负整数的各位数字(最高位在数组首位)。下面代码对该整数执行 +1 操作,并返回结果数组,则横线上应填写( )。

A.

B.

C.

D.

7.

线性筛算法中有语句 if p * i > n break; ,其目的是( )。

A.

降低常数但复杂度仍是

B.

保证每个合数只被其最小质因子筛到一次,从而

C.

提高缓存命中率,复杂度仍

D.

不重要,是否 break 都一样

8.

以下哪种情况使用链表比数组更合适?

A.

数据量固定且读多写少

B.

需要频繁在中间或开头插入、删除元素

C.

需要高效随机访问元素

D.

存储空间必须连续

9.

下述python代码实现了归并排序算法,则横线上应填写( )。

A.

i < mid

B.

j < right

C.

i <= mid

D.

j <= right

10.

给定一个整数数组 nums ,下面代码找到一个具有最大和的连续子数组,并返回其最大和。则下面说法错误的是( )。

A.

上述代码采用分治算法实现

B.

本题算法采用贪心算法

C.

时间复杂度:

D.

由于采用递归方式实现,空间复杂度:

11.

假设你是一家电影院的排片经理,只有一个放映厅。你有一个电影列表 movies ,其中 movies[i] =[start_i, end_i] 表示第 i 部电影的开始和结束时间。请你找出最多能安排多少部不重叠的电影,则横线上应分别填写的代码为( )。

A.

movies

B.

lastEnd

C.

movies[i][0]

D.

movies[i][1]

12.

下面的python代码实现给定单链表头结点 head 和一个整数 val ,删除链表中所有结点值等于 val 的节点,并返回新的头结点,则横线处填写()。

A.

B.

C.

D.

13.

下面的代码实现线性筛法(欧拉筛),横线处应填入( )。

A.

i % p == 0

B.

p % i == 0

C.

i == p

D.

i * p == n

14.

下述python代码实现了快速排序算法,下面说法错误的是( )。

A.

快速排序平均情况下比归并排序的比较、赋值、交换等操作的总数量少,所以命名为“快速”。

B.

在平均情况下,划分的递归层数为 ,每层中的总循环数为n,总时间为

C.

在最差情况下,每轮划分操作都将长度为 的数组划分为长度为 0 和n-1的两个子数组,此时递归层数达到,每层中的循环数为 ,总时间为

D.

划分函数中“从右往左查找”与“从左往右查找”的顺序可以互换。

15.

以下代码计算两个数的最大公约数(GCD),横线上应填写( )。

A.

b

B.

a

C.

temp

D.

a+b

二、判断题

1.

二分查找依赖数据的有序性,通过循环逐步缩减一半搜索区间来进行查找,且仅适用于数组或基于数组实现的数据结构。

A.正确 B.错误
2.

快速排序和归并排序都是稳定的排序算法。

A.正确 B.错误
3.

链表通过更改指针实现高效的节点插入与删除,但节点访问效率低、占用内存较多,且对缓存利用不友好。

A.正确 B.错误
4.

贪心算法总能得到全局最优解。

A.正确 B.错误
5.

基于下面定义的函数,通过判断isDivisibleBy9(n) == isDigitSumDivisibleBy9(n) 代码可验算如果一个数能被9整除,则它的各位数字之和能被9整除。

A.正确 B.错误
6.

线性筛关键是“每个合数只会被最小质因子筛到一次”,因此为

A.正确 B.错误
7.

下面代码采用分治算法求解汉诺塔问题,时间复杂度为

A.正确 B.错误
8.

所有递归算法都可以转换为迭代算法。

A.正确 B.错误
9.

假设函数 gcd() 函数能正确求两个正整数的最大公约数,则下面的findMusicalPattern(4,6) 函数返回2。

A.正确 B.错误
10.

下面递归实现的斐波那契数列的时间复杂度为

A.正确 B.错误

三、编程题

1.

试题名称:数字选取

时间限制:1.0 s

内存限制:512.0 MB

2.

试题名称:有趣的数字和

时间限制:1.0 s

内存限制:512.0 MB

公众号
客服 反馈
顶部