理论卷2024年12月GESP等级认证(Python) · 五级

GESP Python 5级 2024.12

满分 100 · 及格 60 · 时长 60 分钟 · 共 27 题 (单选15 / 判断10 / 编程题2)
试卷阅览 · 免费预览前 10 题 · 交卷后可查看答案与解析
1
单选题号 #9415
分值 2

下面的程序中,x、y 都是正整数,完成的算法是( )。

def chenadai(x, y):
 while y:
 x, y = y, x % y
 return x
A

最小公倍数

B

最大公约数

C

数字 x 能够整除 y 的最小数

D

数字 x 与数字 y 的所有公约数

2
单选题号 #9416
分值 2

下列程序中实现的是( )。

def chenadai(x, y):
 return x * y // (x, y的最大公约数)
A

实现了求 x,y 的最小公约数

B

实现了求 x,y 的最大公约数

C

实现了求 x,y 的最小公倍数

D

实现了求 x,y 的平均值

3
单选题号 #9417
分值 2

欧几里得算法又称作辗转相除算法,下面程序中是这种算法的是( )。

A
def gcd(a, b):
 if b == 0:
 return a
 return gcd(b, a % b)
B
def gcd(a, b):
 if a < b:
 a, b = b, a
 while b!= 0:
 a, b = b, a % b
 return b
C
def gcd(a, b):
 if b == 0:
 return a
 return gcd(a, a % b)
D
def gcd(a, b):
 if b == 0:
 return a
 return gcd(b, b % a)
4
单选题号 #9418
分值 2

下列程序是二分法的程序,横线处应该填上( )。

def binary_search(arr, target):
 left = 0
 right = len(arr) - 1
 while left <= right:
 mid = (left + right) // 2
 ____________
 return -1
A
if arr[mid] == target:
 return mid
elif arr[mid] > target:
 right = mid - 1
B
if arr[mid] == target:
 return mid
elif arr[mid] > target:
 right = mid
else:
 left = mid
C
if arr[mid] == target:
 return mid
elif arr[mid] > target:
 right = mid - 1
else:
 left = mid + 1
D
if arr[mid] == target:
 return mid
else:
 left = mid + 1
5
单选题号 #9419
分值 2

下面折半查找程序的时间复杂度为( )。

def binary_search(arr, x):
 low = 0
 high = len(arr) - 1
 while low x:
 high = mid - 1
 else:
 low = mid + 1
 return -1
A

O(n∗logn)O(n*logn)

B

O(n)O(n)

C

O(logn)O(logn)

D

O(n2)O(n^2)

6
单选题号 #9420
分值 2

下列程序中,使用了埃氏筛法,横线处应该填写的是( )。

def aishishai(n):
 if n < 2:
 return []
 prime = [True] * (n + 1)
 prime[0] = prime[1] = False
 ________________
 return [p for p in range(n + 1) if prime[p]]
A

for p in range(2, n ** 0.5 + 1):

B

for p in range(2, int(n ** 0.5) + 1):

C

for p in range(2, int(n ** 0.5) + 0.5)

D

for p in range(2, n ** 0.5 + 0.5):

7
单选题号 #9421
分值 2

18 到 100 之间的所有素数的和为多少( )。

A

1060

B

1004

C

1002

D

1052

8
单选题号 #9422
分值 2

下面程序是对 2024 进行唯一分解,最后的结果应该是( )。

def weiyi(n):
 for i in range(2, n + 1):
 factors = {}
 while n % i == 0:
 if i in factors:
 factors[i] += 1
 else:
 factors[i] = 1
 n //= i
 return factors
A

1, 2, 3, 13, 23

B

2, 7, 11, 23

C

2: 3, 11: 1, 23: 1

D

2, 3, 13, 23

9
单选题号 #9423
分值 2

下面关于循环链表的说法正确的是( )

A

循环链表的最后一个结点指向头结点,形成一个闭环

B

必须通过特定结点才可以遍历整个链表

C

不属于链式存储结构

D

在长度为 n 的顺序表下标为 i 的位置前插入一个元素(1 ≤ i ≤ n + 1),元素的移动次数为 n - i + 1

10
单选题号 #9424
分值 2

下列归并算法程序中,横线处应该填入的是( )。

def merge_sort(array):
 if len(array) == 1:
 return array
 __________________
 return merge(left, right)

def merge(left, right):
 left_index, right_index, merge_array = 0, 0, []
 while left_index < len(left) and right_index < len(right):
 if left[left_index] <= right[right_index]:
 merge_array.append(left[left_index])
 left_index += 1
 else:
 merge_array.append(right[right_index])
 right_index += 1
 merge_array = merge_array + left[left_index:] + right[right_index:]
 return merge_array
A
left = merge_sort(array[:len(array) - 1 // 2])
right = merge_sort(array[len(array) - 1 // 2:])
B
left = merge_sort(array[len(array) // 2 - 1])
right = merge_sort(array[len(array) // 2:])
C
left = merge_sort(array[len(array) // 2 - 1])
right = merge_sort(array[len(array) // 2])
D
left = merge_sort(array[:len(array) // 2])
right = merge_sort(array[len(array) // 2:])
🔒

已解锁前 10 题

第 11~27 题(共 17 题)可在考试中作答
本卷为普通试卷:注册用户每题扣 1 积分(每日登录送 30 体验积分),交卷后查看答案与解析
海小星AI平台海小星AI平台

点亮AI梦想,编程未来之星。专业的青少年AI编程教育平台。

课程方向

  • AIGC人工智能
  • Scratch图形化
  • Python编程
  • C++/NOIP竞赛

联系我们

  • 北京市西城区万博苑7号楼3层F28室
  • +86-010-83553010
  • contact@seanova.cn

© 2026 海小星AI平台|京ICP备2022032747号

隐私政策服务条款