GESP 2025年12月_C++五级试卷
从PDF导入:GESP 2025年12月_C++五级试卷
C++
180分钟
总分 100.0
27 题
试卷题目预览
第1题
中级
2.0分
单选
对如下定义的循环单链表,遍历并输出循环单链表,横线处填写( )。
第2题
中级
2.0分
单选
区块链技术是比特币的基础。下面代码实现插入区块添加函数,则横线处填写( )。
第3题
中级
2.0分
单选
下面关于单链表和双链表的描述中,正确的是( )。
第4题
中级
2.0分
单选
假设我们有两个数x和y,它们对模m同余,即x≡y(mod m)。以下哪个值不可能是m?
第5题
中级
2.0分
单选
下面代码实现了欧几里得算法。下面有关说法,错误的是( )
第6题
中级
2.0分
单选
唯一分解定理描述的内容是( )。
第7题
中级
2.0分
单选
下述代码实现素数表的线性筛法,筛选出所有小于等于n的素数,则横线上应填的代码是( )。
第8题
中级
2.0分
单选
下列关于排序的说法,正确的是( )。
第9题
中级
2.0分
单选
下面代码实现了归并排序。下述关于归并排序的说法中,不正确的是( )。
第10题
中级
2.0分
单选
下述C++代码实现了快速排序算法,最坏情况的时间复杂度是( )。
第11题
中级
2.0分
单选
下面代码尝试在有序数组中查找第一个大于等于x的元素位置。以下说法正确的是( )。
第12题
中级
2.0分
单选
小杨要把一根长度为L的木头切成K段,使得每段长度小于等于x。已知每切一刀只能把一段木头分成两段,他用二分法找到满足条件的最小x(x为正整数),则横线处应填写(
第13题
中级
2.0分
单选
下面给出了阶乘计算的两种方式。以下说法正确的是( )。

第14题
中级
2.0分
单选
给定n个任务,每个任务有截止时间和利润,每个任务耗时1个时间单位。为了在规定时间内获得最大利润,可以采用贪心策略,即按利润从高到低排序,尽量安排,则横线处应填写
第15题
中级
2.0分
单选
下面代码实现了对两个数组表示的正整数的高精度加法(数组低位在前),则横线上应填写( )。

第16题
中级
2.0分
判断
数组和链表都是线性表。链表的优点是插入删除不需要移动元素,并且能随机查找。
第17题
中级
2.0分
判断
假设函数gcd()函数能正确求两个正整数的最大公约数,则下面的lcm(a, b)函数能正确找到两个正整数a和b的最小公倍数。

第18题
中级
2.0分
判断
在单链表中,已知指针p指向要删除的结点(非尾结点),想在O(1)删除p,可行做法是用p->next覆盖p的值与next,然后删除p->next。
第19题
中级
2.0分
判断
在求解所有不大于n的素数时,线性筛法(欧拉筛)都应当优先于埃氏筛法使用,因为线性筛法的时间复杂度为O(n),低于埃氏筛法的O(n log log n)。
第20题
中级
2.0分
判断
二分查找仅适用于有序数据。若输入数据无序,当仅进行一次查找时,为了使用二分而排序通常不划算。
第21题
中级
2.0分
判断
通过在数组的第一个、最中间和最后一个这3个数据中选择中间值作为枢轴(比较基准),快速排序算法可降低落入最坏情况的概率。
第22题
中级
2.0分
判断
贪心算法在每一步都做出当前看来最优的局部选择,并且一旦做出选择就不再回溯;而分治算法将问题分解为若干子问题分别求解,再将子问题的解合并得到原问题的解。
第23题
中级
2.0分
判断
以下fib函数计算第n项斐波那契数(fib(0)=0, fib(1)=1),其时间复杂度为O(2^n)。

第24题
中级
2.0分
判断
递归函数一定要有终止条件,否则可能会造成栈溢出。
第25题
中级
2.0分
判断
使用贪心算法解决问题时,通过对每一步求局部最优解,最终一定能找到全局最优解。
第26题
中级
25.0分
编程
数字移动
小A有一个包含n个正整数的序列A,序列A恰好包含n/2对不同的正整数。形式化地,对于任意i,存在唯一一个j满足Ai=Aj。 小A希望每对相同的数字在序列中相邻,为了实现这一目的,小A每次操作会选择任意i(i>1),将当前序列的第i个数字移动到任意位置,并花费对应数字的体力。 小A可以执行任意次操作,但他希望自己每次花费的体力尽可能小。小A希望你能帮他计算出一个最小的k,使得他能够在每次花费的体力均不超过k的情况下令每对相同的数字在序列中相邻。
【输入格式】
第一行一个正整数n,代表序列长度,保证n为偶数。 第二行包含n个正整数A1,A2,...,An,代表序列A。
【输出格式】
输出一行,代表满足要求的k的最小值。
【样例输入】 6 1 2 1 3 2 3 【样例输出】 2 对于40%的测试点,保证n<=1000。 对于所有测试点,保证2<=n<=10^5。
第27题
中级
25.0分
编程
相等序列
小A有一个包含n个正整数的序列A。小A每次可以花费1个金币执行以下任意一种操作: 1. 选择序列中一个正整数Ai(Ai>1),将Ai变为Ai/p,p为任意质数,要求Ai能被p整除; 2. 选择序列中一个正整数Ai,将Ai变为Ai*p,p为任意质数。 小A想请你帮他计算出令序列中所有整数都相同,最少需要花费多少金币。
【输入格式】
第一行一个正整数n,含义如题面所示。 第二行包含n个正整数A1,A2,...,An,代表序列A。
【输出格式】
输出一行,代表最少需要花费的金币数量。
【样例输入】 5 10 6 35 105 42 【样例输出】 8 对于60%的测试点,保证n<=1000。 对于所有测试点,保证1<=n<=10^5,1<=Ai<=10^5。