image

编辑人: 人逝花落空

calendar2025-06-14

message4

visits933

2024年3月CCF-GESP编程能力等级认证Python编程五级真题参考答案

一、单选题

1、下面流程图在yr输入2024时,可以判定yr代表闰年,并输出 2月是29天 ,则图中菱形框中应该填入(   )。

A (yr % 400 == 0) or (yr % 4 == 0)

B ( yr % 400 == 0) or (yr % 4 == 0 and yr %100 != 0)

C ( yr % 400 == 0) and ( yr % 4 == 0)

D (yr % 400 == 0) and (yr % 4 == 0 and yr % 100 != 0)


2、在TCP协议中,完成连接建立需要通过(   )握手。

A 一次

B 二次

C 三次

D 四次


3、下面有关排序算法的说法,正确的是(   )

A 快速排序是稳定排序

B Python中list类型的sort()是稳定排序

C 冒泡排序是不稳定排序

D 归并排序是不稳定排序


4、不同的排序算法,其空间复杂度也不同。与冒泡法排序空间复杂度相同的是(   )

A 归并排序

B 快速排序

C 计数排序

D 插入排序


5、下面Python代码中,aFactorial()和bFactorial()用于求正整数的阶乘。有关说法,错误的是(   )。

A aFactorial( )用循环方式,bFactorial()递归方式

B bFactorial( )更加符合数学定义,直观易于理解,而aFactorial()需要将数学定义转换为计算机程序实现

C 当N值较大时,aFactorial( )执行效率更高,而bFactorial()因为有多次函数调用,效率将降低,且N如果较大,将可能导致不能使用

D bFactorial( )因为代码量较少,没有循环,因此其执行效率更高


6、有关下面Python代码的说法,正确的是(   )。

A、

代码中qSort()函数不是稳定排序

B、

代码中qSort()函数空间复杂度为O(1)

C、

代码中qSort()函数是就地排序

D、

代码中qSort()函数是外排序,因为排序后的结果保存在新的内存空间即外空间


7、上题不能支持其他常见类型的排序,如实现该支持,横线处分别应填写代码是(   )。

A isinstance(iterData, list) == False , st == [x for x in iterData]

B type(iterData) == list , lst = [x for x in iterData]

C isinstance(iterData, list) , lst = list(iterData)

D type(iterData) != list , lst = list(iterData)


8、上上题qSort()函数不支持排序规则函数,形如sorted()函数的key参数,为实现类似目标,横线处分别应填入代码是(   )。


A fx == None , fx(x) >= fx(Pivot) , fx(x) < fx(Pivot)

B fx == None , fx(x) >= Pivot , fx(x) < Pivot

C fx != None , fx(x) >= fx(Pivot) , fx(x) < fx(Pivot)

D fx != None , fx(x) >= Pivot , fx(x) < Pivot


9、下面的Python代码中merge()函数的两个参数均为list类型,且是已按相同规则排序的数据。下面有关说法中,正确的是(   )。

A 第3-7行代码将导致死循环,因为没有循环变量及其改变

B 第5行和第7行代码执行后,result的成员值为None

C 第9行和第11行是否被执行,与arr1和arr2的成员值有关,如果值转换为False,将不会被执行

merge()函数的代码没有错

D 误,执行后参数arr1和arr2将合并成新的list保存到result之中,且有序


10、阅读下面Python代码,横线处应填入(   )。

A isOdd , isEven

B isOdd , isEven(10)

C isOdd(10) , isEven

D isOdd(10) , isEven(10)


11、下面Python代码的平均时间复杂度是(   )。

A O(N)

B O(logN)

C O(NlogN)

D O(N2)


12、有关下面Python代码的说法,正确的是(   )。

A 代码采用二分法查找,仅对有序list有效,不适用于set、dict等

B 在函数内定义函数,存在多次调用多次定义,因此存在错误

C 第16行代码__bSearch()最后一个参数val应为queryVal

D 第16行代码应为return __bSearch


13、在上题的算法中,其时间复杂度是(  )。

A O(N)

B O(logN)

C O(NlogN)

D O(N2)


14、有关下面Python代码的说法错误的是(   )。

A 代码中第17行执行后,firstNode(第一个节点)的下一个节点指向第3个节点,即secondNode(第2个节点)的下一个

B 代码中第18行执行后,第3个节点的Previous(前向)指向第1个节点(firstNode)

C 仅仅通过firstNode节点,不能访问第2个节点,第2个节点已不在内存中存在,自动释放所占内存

D 在第18行后,执行del secondNode后,第2个节点所占内存才会被释放。仅仅执行先有第16-18行,第2个节点内存不会被释放。


15、下面的Python代码中,idList变量为list类型,保存有大量身份编码,倒数第二位如为偶数,则为女性,奇数为男性,从第7位开始连续8位为出生年月日,年为4位数月和日均为两位数。编码统计每天有几位男生生日女生生日。横线处应填入代码是(   )。

A (1, 0) if gender == 1 else (1, 0) , (0, 1)

B (0, 1) if gender == 1 else (1, 0) , (0, 0)

C 0, 1 if gender == 1 else 1, 0 ,0, 0

D (0, 1) if gender == 1 else (1, 0) ,0, 0


二、判断题

16、一个算法设计合理的话是可以没有输出的,比如冒泡排序就不输出任何信息(   )。

A 正确

B 错误


17、流程图描述算法的能力是有限的,比如它无法对能够提前终止的循环给出等价描述 (   ) 。

A 正确

B 错误


18、归并排序的空间复杂度是 。(   )

A 正确

B 错误


19、在Python中,当对dict类型进行in运算查找元素是否存在时,其时间复杂度为 O(1) ,set类型也如此。(   )

A 正确

B 错误


20、在以下Python代码中,执行后输出是 5=>4=>3=>2=>1=>2=>3=>2=>1=>5 。(   )

A 正确

B 错误


21、贪心算法虽然可能不是局部最优,但可达到全局最优。 (   )

A 正确

B 错误


22、Python内置函数sorted()可对支持for-in循环的数据类型排序。(   )

A 正确

B 错误


23、冒泡排序是就地排序,空间复杂度为 O(1) 。(   )

A 正确

B 错误


24、下面的Python代码能实现N的质因数分解,类似埃氏筛法。(   )

A 正确

B 错误


25、Python代码print(sorted(list(range(10,20)), key = hex))执行后将输出[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]。(   )

A 正确

B 错误


三、实操题

26、成绩排序

问题描述

有N名同学,每名同学有语文、数学、英语三科成绩。你需要按如下规则对所有同学的成绩从高到低排序:

1. 比较总分,高者靠前;

2. 如果总分相同,则比较语文和数学两科总分,高者靠前;

3. 如果仍相同,则比较语文和数学两科的最高分,高者靠前;

4. 如果仍相同,则二人并列。

你需要输出每位同学的排名,如遇x人并列,则他们排名相同,并留空后面的x-1个名次。例如,有3名同学并列第1,则后一名同学自动成为第4名。

输入描述

第一行一个整数N,表示同学的人数。

接下来N行,每行三个非负整数ci,mi,ei分别表示该名同学的语文、数学、英语成绩。

保证0≤ci,mi,ei≤150。

输出描述

输出N行,按输入同学的顺序,输出他们的排名。

注意:请不要按排名输出同学的序号,而是按同学的顺序输出他们各自的排名

特别提醒

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。


样例输入

6
140 140 150
140 149 140
148 141 140
141 148 140
145 145 139
0 0 0

样例输出

1
3
4
4
2
6

数据规模

对于30的测试点,保证N≤100,且所有同学的总分各不相同。

对于所有测试点,保证2≤N≤104

参考答案:对于给定的输入,首先计算每位同学的总分,然后按照题目中的排序规则进行排序。1. 计算总分:* 同学1的总分 = 140 + 140 + 150 = 430* 同学2的总分 = 140 + 149 + 140 = 429* 同学3的总分 = 148 + 141 + 140 = 429* 同学4的总分 = 141 + 148 + 140 = 429* 同学5的总分 = 145 + 145 + 139 = 429* 同学6的总分 = 0 + 0 + 0 = 02. 按照题目中的排序规则进行排序:* 同学1的总分最高,为430,所以同学1排名为1。* 同学2、3、4、5的总分均为429,所以同学2、3、4、5并列排名为3。* 同学6的总分为0,所以同学6排名为6。因此,输出结果为:```134426```


27、B-smooth数(python)

题面描述

小杨同学想寻找一种名为B-smooth数的正整数。

如果一个正整数的最大质因子不超过B,则该正整数为B-smooth数。

小杨同学想知道,对于给定的n和B,有多少个不超过n的B-smooth数。

输入格式

第一行包含两个正整数n,B,含义如题面所示。

输出格式

输出一个非负整数,表示不超过n的B-smooth数的数量。


样例输入

10 3

样例输出

7

样例解释

在不超过10的正整数中,3-smooth 数有{1,2,3,4,6,8,9},共7个。

数据范围

对于全部数据,保证有1≤n≤106,1≤B≤106

参考答案:对于输入的n和B,我们可以遍历从1到n的所有整数,并检查每个整数的最大质因子是否不超过B。如果是,则该整数是一个B-smooth数,我们将其计数。最后,输出计数的结果。


喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2024年3月CCF-GESP编程能力等级认证Python编程五级真题参考答案

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share