2023年9月CCF GESP C++五级单选题(共15题,每题2分,满分30分)
- 近年来,线上授课变得普遍,很多有助于改善教学效果的设备也逐渐流行,其中包括比较常用的手写板,那么它属于哪类设备?( )
{{ select(1) }}
- 如果a 和b 均为int 类型的变量,且b 的值不为0,那么下列能正确判断“a 是b 的3倍”的表达式是( )
{{ select(2) }}
- (a >> 3 == b)
- (a - b) % 3 == 0
- (a / b = 3)
- (a == 3 * b)
- 如果变量a 和b 分别为double 类型和int 类型,则表达式(a=6, b=3*(7+8)/2, b+=a)的计算结果为( )
{{ select(3) }}
- 有关求从1到N之和的C++代码(含循环方式sumA()和递归方式sumB()),说法错误的是( )
{{ select(4) }}
- sumA() 用循环方式求从1 到N 之和,sumB() 用递归方式求从1 到N 之和
- 默认情况下,如果输入正整数1000,能实现求从1 到1000 之和
- 默认情况下,如果输入正整数100000,能实现求从1 到100000 之和
- 一般说来,sumA() 的效率高于sumB()

- 下面C++代码以递归方式实现字符串反序,横线处应填上的代码是( )
{{ select(5) }}
- sIn[sIn.length() - 1] + sReverse(sIn.substr(0, sIn.length() - 1));
- sIn[0] + sReverse(sIn.substr(1, sIn.length() - 1));
- sReverse(sIn.substr(0, sIn.length() - 1)) + sIn[sIn.length() - 1];
- sReverse(sIn.substr(1, sIn.length() - 1)) + sIn[sIn.length() - 1];

- 印度古老的汉诺塔传说:创世时有三根金刚柱,一柱摞着64片黄金圆盘(下大上小),需将圆盘从一柱借助另一柱移到第三柱(小圆盘上不能放大圆盘,一次移一个)。下面C++代码以递归方式实现汉诺塔,横线处应填入的代码是( )
{{ select(6) }}
- Hanoi(B, C, A, N - 2)
- Hanoi(B, A, C, N - 1)
- Hanoi(A, B, C, N - 2)
- Hanoi(C, B, A, N - 1)

- 根据C++代码注释(对整型向量lstA按比较函数排序,lstB存储lstA中的奇数),两个横线处应分别填入的代码是( )
{{ select(7) }}
- compare 和 isOdd(lstA[i])
- compare(x1,y1) 和 isOdd
- compare 和 isOdd
- compare(x1,y1) 和 isOdd(lstA[i])

- 有关C++函数指针应用的代码(checkNum()接收函数指针参数,isEven()判断偶数),说法正确的是( )
{{ select(8) }}
- checkNum() 函数定义错误
- 将isEven 作为checkNum() 参数将导致错误
- 执行后将输出1
- 运行时触发异常

- 有关C++函数指针应用的代码(checkNum()接收返回bool的函数指针,isOdd()判断奇数、Square()求平方),说法正确的是( )
{{ select(9) }}
- checkNum() 函数定义错误
- 调用checkNum(isOdd,10)的语句将导致编译错误
- 调用checkNum(Square,10)的语句将导致编译错误
- 该代码没有编译错误

- 下面C++代码(jumpFloor()递归计算特定值并输出过程)执行后的输出是( )
{{ select(10) }}
- 4#3#2#2#4
- 4#3#2#2#1#5
- 4#3#2#1#2#4
- 4#3#2#1#2#5

- 下面C++代码中isPrimeA() 和isPrimeB() 均用于判断参数N 是否为素数,有关其时间复杂度的正确说法是( )
{{ select(11) }}
- isPrimeA() 的最坏时间复杂度是 (O(N)),isPrimeB() 的最坏时间复杂度是 (O(log N)),isPrimeB() 优于 isPrimeA()
- isPrimeA() 的最坏时间复杂度是 (O(N)),isPrimeB() 的最坏时间复杂度是 (O(N^{\frac{1}{2}})),isPrimeB() 优于 isPrimeA()
- isPrimeA() 的最坏时间复杂度是 (O(N^{\frac{1}{2}})),isPrimeB() 的最坏时间复杂度是 (O(N)),isPrimeA() 优于 isPrimeB()
- isPrimeA() 的最坏时间复杂度是 (O(log N)),isPrimeB() 的最坏时间复杂度是 (O(N)),isPrimeA() 优于 isPrimeB()

- 下面C++代码用于归并排序,其中merge() 函数被调用的次数为( )
{{ select(12) }}

- 在上题的归并排序算法中,“mergeSort(listData, start, middle);” 和 “mergeSort(listData, middle + 1, end);” 涉及到的算法为( )
{{ select(13) }}
- 归并排序算法的基本思想是( )
{{ select(14) }}
- 将数组分成两个子数组,分别排序后再合并
- 随机选择一个元素作为枢轴,将数组划分为两个部分
- 从数组的最后一个元素开始,依次与前一个元素比较并交换位置
- 比较相邻的两个元素,如果顺序错误就交换位置
- 有关C++链表节点类及节点创建的代码(创建三个节点,最后一个节点指向第一个节点),说法正确的是( )
{{ select(15) }}
- 上述代码构成单向链表
- 上述代码构成双向链表
- 上述代码构成循环链表
- 上述代码构成指针链表
