理论卷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
B
C
D
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
分值 218 到 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 体验积分),交卷后查看答案与解析
