GESP 2023年12月_C++五级试卷

从PDF导入:GESP 2023年12月_C++五级试卷

C++ 180分钟 总分 100.0 27 题
试卷题目预览
第1题 中级 2.0分 单选
下面C++代码用于求斐波那契数列,该数列第1、2项为1,以后各项均是前两项之和。下面有关说法错误的是( )。

A. fiboA()用递归方式,fiboB()循环方式
B. fiboA()更加符合斐波那契数列的数学定义,直观易于理解,而fiboB()需要将数学定义转换为计算机程序实现
C. fiboA()不仅仅更加符合数学定义,直观易于理解,且因代码量较少执行效率更高
D. fiboB()虽然代码量有所增加,但其执行效率更高
第2题 中级 2.0分 单选
下面C++代码以递归方式实现合并排序,并假设merge函数将有序的T[s..m]和T[m+1..t]归并到R[s..t]中。横线处应填上代码是( )。

A. mergeSort(SList, T2, s, m,len), mergeSort(SList, T2, m,t,len)
B. mergeSort(SList, T2, s, m-1,len), mergeSort(SList, T2, m+1,t,len)
C. mergeSort(SList, T2, s, m,len), mergeSort(SList, T2, m+1,t,len)
D. mergeSort(SList, T2, s, m-1,len), mergeSort(SList, T2, m-1,t,len)
第3题 中级 2.0分 单选
阅读下面的C++代码,执行后其输出是( )。

A. 1->120<===>2->120
B. 1->120<===>1->120
C. 1->120<===>1->2->3->4->5->120
D. 1->120<===>2->3->4->5->6->120
第4题 中级 2.0分 单选
下面的C++用于对lstA排序,使得偶数在前奇数在后,横线处应填入( )。

A. isEven(lstA[j]) && !isEven(lstA[j+1])
B. !isEven(lstA[j]) && isEven(lstA[j+1])
C. lstA[j] > lstA[j+1]
D. lstA[j] < lstA[j+1]
第5题 中级 2.0分 单选
下面的C++代码用于将字符串保存到带头节点的双向链表中,并对重复的串计数,然后将最新访问的串的节点放在链头便于查找。横线处应填入代码是( )。

A. if(pHead) {p->next = pHead->next, pHead->next->prev = p;}
B. if(pHead->next) {p->next = pHead->next, pHead->next->prev = p;}
C. p->next = pHead->next, pHead->next->prev = p;
D. 触发异常,不能对空指针进行操作。
第6题 中级 2.0分 单选
有关下面C++代码说法正确的是( )。

A. 如果x小于10,rc值也不会超过20
B. foo可能无限递归
C. foo可以求出x和y的最大公共质因子
D. foo能够求出x和y的最小公倍数
第7题 中级 2.0分 单选
下面的C++代码实现对list的快速排序,有关说法,错误的是( )。

A. qSort(less) + qSort(greater) + (vector)pivot
B. (vector)pivot + (qSort(less) + qSort(greater))
C. (qSort(less) + (vector)pivot + qSort(greater))
D. qSort(less) + pivot + qSort(greater)
第8题 中级 2.0分 单选
下面C++代码中的isPrimeA()和isPrimeB()都用于判断参数N是否素数,有关其时间复杂度的正确说法是( )。

A. isPrimeA()的最坏时间复杂度是O(N),isPrimeB()的最坏时间复杂度是O(√N),isPrimeA()优于isPrimeB()
B. isPrimeA()的最坏时间复杂度是O(N),isPrimeB()的最坏时间复杂度是O(√N),isPrimeB()绝大多数情况下优于isPrimeA()
C. isPrimeA()的最坏时间复杂度是O(√N),isPrimeB()的最坏时间复杂度是O(N),isPrimeA()优于isPrimeB()
D. isPrimeA()的最坏时间复杂度是O(N),isPrimeB()的最坏时间复杂度是O(√N),isPrimeA()优于isPrimeB()
第9题 中级 2.0分 单选
下面C++代码用于有序list的二分查找,有关说法错误的是( )。

A. 代码采用二分法实现有序list的查找
B. 代码采用分治算法实现有序list的查找
C. 代码采用递归方式实现有序list的查找
D. 代码采用动态规划算法实现有序list的查找
第10题 中级 2.0分 单选
在上题的_binarySearch算法中,如果lst中有N个元素,其时间复杂度是( )。
A. O(1)
B. O(N)
C. O(log N)
D. O(N log N)
第11题 中级 2.0分 单选
下面的C++代码使用数组模拟整数加法,可以处理超出大整数范围的加法运算。横线处应填入代码是( )。

A. c.push_back(t % 10), t = t % 10;
B. c.push_back(t / 10), t = t % 10;
C. c.push_back(t / 10), t = t / 10;
D. c.push_back(t % 10), t = t / 10;
第12题 中级 2.0分 单选
有关下面C++代码的说法正确的是( )。

A. 上述代码构成单向链表
B. 上述代码构成双向链表
C. 上述代码构成循环链表
D. 上述代码构成指针链表
第13题 中级 2.0分 单选
通讯卫星在通信网络系统中主要起到()的作用。
A. 信息过滤
B. 信号中继
C. 避免攻击
D. 数据加密
第14题 中级 2.0分 单选
小杨想编写一个判断任意输入的整数N是否为素数的程序,下面哪个方法不合适?( )
A. 埃氏筛法
B. 线性筛法
C. 二分答案
D. 枚举法
第15题 中级 2.0分 单选
下面的排序算法都要处理多趟数据,哪种排序算法不能保证在下一趟处理时从待处理数据中选出最大或最小的数据?( )
A. 选择排序
B. 快速排序
C. 堆排序
D. 冒泡排序
第16题 中级 2.0分 判断
归并排序的时间复杂度是O(n log n)。( )
T. 正确
F. 错误
第17题 中级 2.0分 判断
小杨在生日聚会时拿一块H*W的巧克力招待来的K个小朋友,保证每位小朋友至少能获得一块相同大小的巧克力。那么小杨想分出来最大边长的巧克力可以使用二分法。( )
T. 正确
F. 错误
第18题 中级 2.0分 判断
以下C++代码能以递归方式实现斐波那契数列,该数列第1、2项为1,以后各项均是前两项之和。( )

T. 正确
F. 错误
第19题 中级 2.0分 判断
贪心算法可以达到局部最优,但可能不是全局最优解。( )
T. 正确
F. 错误
第20题 中级 2.0分 判断
小杨设计了一个拆数程序,它能够将任意的非质数自然数N转换成若干个质数的乘积,这个程序是可以设计出来的。( )
T. 正确
F. 错误
第21题 中级 2.0分 判断
插入排序有时比快速排序时间复杂度更低。( )
T. 正确
F. 错误
第22题 中级 2.0分 判断
下面的C++代码能实现十进制正整数N转换为八进制并输出。( )

T. 正确
F. 错误
第23题 中级 2.0分 判断
对数组int arr[] = {2, 6, 3, 5, 4, 8, 1, 0, 9, 10}执行sort(arr, arr+10),则执行后arr中的数据调整为
T. 正确
F. 错误
第24题 中级 2.0分 判断
小杨想写一个程序来算出正整数N有多少个因数,经过思考他写出了一个重复没有超过N/2次的循环就能够算出来了。( )
T. 正确
F. 错误
第25题 中级 2.0分 判断
同样的整数序列分别保存在单链表和双向链中,这两种链表上的简单冒泡排序的复杂度相同。( )
T. 正确
F. 错误
第26题 中级 25.0分 编程
小杨的幸运数

小杨认为,所有大于等于a的完全平方数都是他的超级幸运数。 小杨还认为,所有超级幸运数的倍数都是他的幸运数。自然地,小杨的所有超级幸运数也都是幸运数。 对于一个非幸运数,小杨规定,可以将它一直+1,直到它变成一个幸运数。我们把这个过程叫做幸运化。 现在,小杨给出T个数,请你首先判断它们是不是幸运数;接着,对于非幸运数,请你将它们幸运化。

【输入格式】
第一行2个正整数a和T。
接下来T行,每行一个正整数x,表示需要判断(幸运化)的数。
【输出格式】
输出T行,对于每个给定的x,如果它是幸运数,请输出lucky,否则请输出将其幸运化后的结果。
【样例输入】

2 4
1
4
5
9
【样例输出】

4
lucky
8
lucky
对于所有测试点,保证1<=a<=10^6;保证1<=T<=10^5;保证1<=x<=10^6。
第27题 中级 25.0分 编程
烹饪问题

有N种食材,编号从1至N,其中第i种食材的美味度为ai。 不同食材之间的组合可能产生奇妙的化学反应。具体来说,如果两种食材的美味度分别为x和y,那么它们的契合度为x & y。 其中,&运算为按位与运算。现在,请你找到契合度最高的两种食材,并输出它们的契合度。

【输入格式】
第一行一个整数N,表示食材的种数。
接下来一行N个用空格隔开的整数,依次为a1到aN,表示各种食材的美味度。
【输出格式】
输出一行一个整数,表示最高的契合度。
【样例输入1】

3
1 2 3
【样例输出1】

2
【样例输入2】

5
5 6 2 10 13
【样例输出2】

8
对于所有测试点,保证2<=N<=10^6,1<=ai<=2^31-1。
💬