选择题 共14道

01 02 03 04 05 06 07 08 09 11 12 13 14 15


判断题 共10道

16 17 18 19 20 21 22 23 24 25


编程题 共2道

26 27

437 | 202409GESP Python五级试卷-练习
选择题 共14道
01

在升序数组 nums 中寻找目标值 target,下列程序可以填入的是( )

class Search(object):

   def search(self, nums, target):

       left, right = 0, len(nums) - 1

       while left <= right:

       ________________________________________

       if nums[mid] == target:

           return mid

       elif nums[mid] > target:

           right = mid - 1

       else:

           left = mid + 1

       return -1

2分
登录后查看选项
02

500个病毒样本中,已知有一个是病毒检测呈阳性,用试纸测试阳性病毒以后,试纸在3天以后会变色,用试纸测试时间不计,三天以后要出结果,请问最少用多少个试纸能够找出哪一个病毒样本有毒()

2分
登录后查看选项
03

一名收银员,给顾客找零,找零的目标是给出确定金额的同时,使用尽可能少的硬币。有不同面额的硬币:1分,5分,10分,25分.如果需要给顾客准确的零钱77分,同时使用最少的硬币下列程序中横线应该填写( )。


def coin_change(amount, coins):

   result = []

   for coin in sorted(coins, reverse=True):

       while amount >= coin:

           ___________________

           result.append(coin)

       return result


coins = [1, 5, 10, 25]

amount = 63


2分
登录后查看选项
04

下列程序是素数筛的程序,横线处应该填上( )。

def sieve(n):

   if n < 2:

       return []

   prime = [True] * (n+1)

   prime[0] = prime[1] = False

   for i in range(2, int(math.sqrt(n)) + 1):

       if prime[i]:

           _______________________

               prime[j] = False

   return [p for p in range(2, n+1) if prime[p]]

for prime in sieve_of_eratosthenes(100):

   print(prime)

2分
登录后查看选项
05

下面程序是埃氏筛的一个实现,横线处应该填写( )。

n = 10**8

s = [0]*(n+1)

k=0

for i in range(2,n+1):

   if s[i]==0:

       k+=1

       ___________________________

           s[j]=1

2分
登录后查看选项
06

下列程序中,使用了二分查找算法,横线处应该填写的是()。

def search(arr, x):

   low = 0

   high = len(arr) - 1

   while low <= high:

   __________________

       if arr[mid] == x:

           return mid

       elif arr[mid] > x:

           high = mid - 1

       else:

           low = mid + 1

   return -1

2分
登录后查看选项
07

正整数1024的所有约数的和为多少( )。

2分
登录后查看选项
08

下面程序是对n!进行唯一分解,横线处应该填入的是( )。

def unique_fac(n):

   print(n, '=', end='')

   for i in range(2, n + 1):

       _____________________________

               print(' {}*'.format(i), end='')

               n //= i

       if n % i == 0 and i == n:

           print(' {}'.format(i), end='')

           break


unique_fac(math.factorial(5))

2分
登录后查看选项
09

假设有⼀些物品,每个物品都有⾃⼰的重量,我们需要将这些物品装⼊箱⼦中,每个箱⼦也有⾃⼰的重量限制。贪⼼算法每次都选择重量最轻的物品放⼊当前最轻的箱⼦中,如果箱⼦可以装下,就放⼊;如果箱⼦不能装下,就尝试下⼀个箱⼦,直到找到可以放⼊的箱⼦。下列贪⼼算法程序中,横线处应该填⼊的是( )。

2分
登录后查看选项
11

下列快速排序算法中,横线处应该填入的是( )。

def quick(arr):

   if len(arr) <= 1:

       return arr

   ____________________

   left = [x for x in arr if x < p]

   middle = [x for x in arr if x == p]

   right = [x for x in arr if x > p]

   return quick(left) + middle + quick(right)

2分
登录后查看选项
12

下列二分枚举算法中,{ }处应该填入的程序是({}不算做程序的一部分)( )。

def binary_search(arr, x):

   low = 0

   high = len(arr) - 1

   while low <= high:

   {

    }

   return -1

2分
登录后查看选项
13

下面代码是寻找水仙花数的程序,横线处应该填写的代码是( )。【是指一个n位数(n≥3),其每位数字的n次幂之和等于它本身】

def is_narcissistic_num(num):

   str_num = str(num)

   num_digits = len(str_num)

   ————————————————————————————

   return num == sum_of_powers


for i in range(100, 10000):

   if is_narcissistic_num(i):

   print(i, "是水仙花数")

2分
登录后查看选项
14

对于正整数n,欧拉函数f(n),表示小于或等于n的正整数中与n互质的数的数目,例如f(8)=4。f(100)=( )。

2分
登录后查看选项
15

下列程序输出的是( )。

def reverse(string):

   if len(string) == 0:

       return

   temp = string[0]

   reverse(string[1:])

   print(temp, end='')

string = "chen a dai"

reverse(string)

2分
登录后查看选项
判断题 共10道
16

(-1) mod 127和126 mod 127 的结果是一样的

2分
登录后查看选项
17

一个数的反码,实际上是这个数对于一个模的同余数

2分
登录后查看选项
18

1997和615用欧几里得算法计算最大公约数的过程如下:


1997/615=3(余152)

615/152=4(余7)

152/7=21(余5)

7/5=1(余2)

5/2=2(余1)

2/1=2(余0)

得出最大公约是是1

2分
登录后查看选项
19

欧几里得算法适用于实数

2分
登录后查看选项
20

每个大于1的整数可以唯一地写成质数的乘积的形式

2分
登录后查看选项
21

贪婪算法的复杂度通常是线性的,即O(n),其中n是输入的大小

2分
登录后查看选项
22

归并排序的时间复杂度为O(n log n)

2分
登录后查看选项
23

根据同余计算,可以推导出(a∗b)%m=(a%m∗b%m)%m

2分
登录后查看选项
24

二分查找算法的复杂度通常表示为O(log n),其中n是数组的长度

2分
登录后查看选项
25

def(十六进制) = 103231(五进制)

2分
登录后查看选项
编程题 共2道
26

25分
登录后作答
27

44.png

55.png

66.png

25分
登录后作答