CCF GESP 2026年9月认证 Python 6级

所有 GESP 真题,手机上也能刷 · 自动判分 · 错题自动进错题本 扫码去刷
一 单选题
共 15 道 每题 2 分 共计 30 分
第 1 题
下列代码执行后的输出结果是( )。
class Animal:
    def speak(self):
        print("Animal ", end="")
class Cat(Animal):
    def speak(self):
        print("Cat ", end="")
def main():
    p: Animal = Cat()
    p.speak()
main()
A
Animal
B
Cat
C
Animal Cat
D
编译错误
第 2 题
下列代码横线处填写哪一项,才可以正确调用父类的带参数构造函数( )
class Machine:
    def __init__(self, s):
        self.id = s
class Robot(Machine):
    def __init__(self, s, n):
        _______________
        self.level = n
A
Machine(s)
B
Machine.Machine(s)
C
super().__init__(s)
D
self.id = s
第 3 题
下列代码执行后的输出顺序是( )。
class Base:
    def __init__(self):
        print("B ", end="")
    def __del__(self):
        print("~B ", end="")
class Derived(Base):
    def __init__(self):
        super().__init__()
        print("D ", end="")
    def __del__(self):
        print("~D ", end="")
def main():
    p = Derived()
    del p
main()
A
B D ~D ~B
B
B D ~D
C
D B ~D ~B
D
B D
第 4 题
下列代码执行后的输出结果是( )。
s = []
q = []
for i in range(2,7,2):
    s.append(i)
    q.append(i)
s.pop()
q.pop(0)
print(s[-1], q[0])
A
4 4
B
2 2
C
6 6
D
6 2
第 5 题
下面循环队列采用牺牲一个存储单元(空出一个位置)的方法区分队空与队满,full() 函数判断队列是否已满,横线处应填写( )。
MAXN = 8
data = [0] * MAXN
front = 0
rear = 0
def full():
    return _______________
A
rear == front
B
(front + 1) % MAXN == rear
C
(rear + 1) % MAXN == front
D
rear == MAXN - 1
第 6 题
下列函数属于二叉树哪一种遍历( )
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None
def visit(root):
    if root is None:
        return
    visit(root.left)
    print(root.val, end=" ")
    visit(root.right)
A
前序遍历
B
中序遍历
C
后序遍历
D
层序遍历
第 7 题
已知一棵二叉树的先序遍历序列为 A B D E C F ,中序遍历序列为 D B E A C F ,则其后序遍历序列是 ( )。
A
D E B F C A
B
D B E F C A
C
E D B F C A
D
D E B C F A
第 8 题
下面函数用来计算二叉树的高度,横线处应填写( )。
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None
def height(root):
    if root is None:
        return 0
    leftH = height(root.left)
    rightH = height(root.right)
    return _______________
A
leftH + rightH
B
min(leftH, rightH) + 1
C
max(leftH, rightH)
D
max(leftH, rightH) + 1
第 9 题

下面代码实现二叉树深度优先搜索(迭代版前序遍历),横线处应当填写( )。

class TreeNode:
    def __init__(self, val):
        self.value = val
        self.left = None
        self.right = None
def dfs(root):
    if root is None:
        return
    s = []
    s.append(root)
    while len(s) > 0:
        node = s.pop()
        print(node.value, end=" ")
        # --------此处填空--------
A
s.append(node.right)
s.append(node.left)
B
s.append(node.left)
s.append(node.right)
C
if node.right:
    s.append(node.right)
if node.left:
    s.append(node.left)
D
if node.left:
    s.append(node.left)
if node.right:
    s.append(node.right)
第 10 题

下面函数用于在二叉搜索树里面查找数值 x ,横线处应当填写( )。

class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None
def searchBST(root, x):
    if root is None or root.val == x:
        return root
    if x < root.val:
        return searchBST(root.left, x)
    return _______________
A

searchBST(root.left, x)

B

searchBST(root.right, x)

C

searchBST(root, x + 1)

D

root.right

第 11 题
有 5 个字符,其出现频率分别为 {2, 4, 5, 9, 12} 。按哈夫曼算法构造编码树,其最小带权路径长度 WPL 为( )。
A
$68$
B
$69$
C
$71$
D
$73$
第 12 题
下面代码使用反射法生成 n 位格雷编码,横线处应该填写( )
def gray(n):
    ans = ["0", "1"]
    for bit in range(2, n + 1):
        oldSize = len(ans)
        for i in range(oldSize - 1, -1, -1):
            ans.append(_______________)
        for i in range(oldSize):
            ans[i] = "0" + ans[i]
    return ans
A
"1" + ans[i]
B
ans[i]
C
"1" + str(i)
D
"0" + ans[i]
第 13 题
下面代码计算爬到第 n 级台阶的方案数,每次可以跨 1 级或者 2 级台阶,横线处应填写( )。
def ways(n):
    if n <= 2:
        return n
    dp = [0] * (n + 1)
    dp[1] = 1
    dp[2] = 2
    for i in range(3, n + 1):
        dp[i] = _______________
    return dp[n]
A
dp[i - 1] + 1
B
dp[i - 1] + dp[i - 2]
C
dp[i - 2] + 2
D
2 * dp[i - 1]
第 14 题

代码求解:从包含非负元素的数组选取若干互不相邻的元素,得到最大和,横线处填写( )

def maxSum(a):
    n = len(a)
    if n == 0:
        return 0
    if n == 1:
        return a[0]
    dp = [0] * n
    dp[0] = a[0]
    dp[1] = max(a[0], a[1])
    for i in range(2, n):
        dp[i] = _______________
    return dp[-1]
A

dp[i - 1] + a[i]

B

dp[i - 2] + a[i]

C

max(dp[i - 1], dp[i - 2] + a[i])

D

max(dp[i - 1], a[i])

第 15 题

下面是一维数组实现的 0/1 背包,内层循环必须从大到小枚举容量,主要原因是( )

# n物品数量,W背包总容量
for i in range(n):
    w = W
    while w >= weight[i]:
        dp[w] = max(dp[w], dp[w - weight[i]] + value[i])
        w -= 1
A

保证每件物品最多被选择一次

B

保证物品必须按照重量从大到小选择

C

降低时间复杂度到 $O(n)$

D

防止数组 dp 发生越界

单选题部分已到底了。

小程序开心码未来

微信扫码,随时随地练 GESP 真题

  • 手机刷题 · 自动判分,错题自动归档到错题本
  • 绑定网站账号后,查看答案解析等权限自动同步
开心码未来小程序二维码(微信扫一扫) 微信扫一扫