#GESP523091. GESP23年9月五级选择题

GESP23年9月五级选择题

2023年9月CCF GESP C++五级单选题(共15题,每题2分,满分30分)

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

  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)

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

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

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

  1. 下面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

  1. 下面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()

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

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