1 条题解

  • 1
    @ 2024-5-30 19:30:57

    1、近年来,线上授课变得普遍,很多有助于改善教学效果的设备也逐渐流行,其中包括比较常用的手写板,那么它属于哪类设备?( )。

    A. 输⼊

    B. 输出

    C. 控制

    D. 记录

    【答案】A

    【考纲知识点】 计算机基础知识

    【解析】本题属于考察计算机基础知识知识。手写板是输入信息的设备,选 A。

    2、如果 a 和 b 均为 int 类型的变量,且 b 的值不为 0 ,那么下列能正确判

    断“ a 是 b 的 3 倍”的表达式是()。

    A. (a >> 3 == b)

    B. (a - b) % 3 == 0

    C. (a / b == 3)

    D. (a == 3 * b)

    【答案】D

    【考纲知识点】 运算表达式和位运算

    【解析】本题属于考察运算表达式和位运算知识。b 不等于 0,a 是 b 的 3 倍。 A 选项中,a 右移 3 位,相当于除以 8;B 是取余运算;如果 a=7,b=2,a/b 的结果也等于 3,因为是整型,C 选项也不正确;选 D。

    3、如果变量 a 和 b 分别为 double 类型和 int 类型,则表达式(a = 6,b = 3 * (7 + 8) / 2, b += a) 的计算结果为( )。

    A. 6

    B. 21

    C. 28

    D. 不确定

    【答案】C

    【考纲知识点】 数据类型和运算表达式

    【解析】本题属于考察数据类型、逗号表达式、运算表达式知识。逗号表达式从左到右依次计算每一个表达式,整个逗号表达式的结果是最后一个表达式的计算结果,a=6,b=3*15/2=22,b=6+22=28,选 C。

    4、有关下⾯C++代码说法错误的是( )。

    image

    A. sumA() 用循环方式求从 1 到 N 之和, sumB() 用递归方式求从 1 到 N之和。

    B.默认情况下,如果输入正整数 1000 ,能实现求从 1 到 1000 之和。

    C. 默认情况下,如果输入正整数 100000 ,能实现求从 1 到 100000 之和。

    D. ⼀般说来, sumA() 的效率高于 sumB() 。

    【答案】C

    【考纲知识点】 函数和递归算法

    【解析】本题属于考察递归和函数知识。sumA 用循环求的是 1 到 n 的总和;sumB用递归的方式求 1 到 n 的总和。1 加到 100000 的和大于 int 类型最大值,2147483647,会溢出,选 C。

    5、下⾯C++代码以递归方式实现字符串反序,横线处应填上代码是( )。

    image

    A. sIn[sIn.length() - 1] + sReverse(sIn.substr(0, sIn.length() - 1));

    B. sIn[0] + sReverse(sIn.substr(1, sIn.length() - 1));

    C. sReverse(sIn.substr(0, sIn.length() - 1)) + sIn[sIn.length() - 1];

    D. sReverse(sIn.substr(1, sIn.length() - 1)) + sIn[sIn.length() - 1];

    【答案】A

    【考纲知识点】 函数和递归算法

    【解析】本题属于考察递归和函数知识。要倒序输出字符串,先输出字符串中的最后一个字符,最后一个字符下标是长度-1,然后翻转除了最后一个字符的字符串,这个字符串是从 0 开始,选 sln.length()-1 个字符,选 A。

    6、印度古老的汉诺塔传说:创世时有三根金刚柱,其中一柱从下往上按照大小顺序摞着 64片黄金圆盘,当圆盘逐一从一柱借助另外一柱全部移动到另外一柱时,宇宙毁灭。移动规则:在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。下面的 C++代码以递归方式实现汉诺塔,横线处应填入代码是( )。

    image

    A. Hanoi(B, C, A, N - 2)

    B. Hanoi(B, A, C, N - 1)

    C. Hanoi(A, B, C, N - 2)

    D. Hanoi(C, B, A, N - 1)

    【答案】B

    【考纲知识点】 函数和递归算法

    【解析】本题属于考察递归和函数知识。汉诺塔比较经典的递归问题,第 11 行代码意味这剩下的 N-1 块圆盘,现在 B 柱子上,借助 A 柱,挪到 C 柱上,选 B。

    7、根据下面C++代码的注释,两个横线处应分别填⼊( )。

    image

    A. compare 和 isOdd(lstA[i])

    B. compare(x1,y1) 和 isOdd

    C. compare 和 isOdd

    D. compare(x1,y1) 和 isOdd(lstA[i]) 【答案】A 【考纲知识点】 函数的调用、值传递

    【解析】本题考察的是 vector 和 sort 函数的使用。本题中首先创建了一个 vector lstA 存储整数 1~99,然后调用 sort 函数对 lstA 进行排序,sort 函数排序需要传递三个参数,前两个参数决定了排序范围的起始位置和结束位置,第三个参数是 排序规则函数,排序规则函数需要两个参数和一个 bool 类型的返回值,所以代码 1 处传递排序规则函数 compare,只需要写函数名即可,不需要写成调用的形式,排除选项 B 和 D。

    接下来的代码是将 lstA 中的奇数存储到另一个 vector lstB 中,判断奇数可以使用自定义函数 isOdd,代码 2 处是调用 isOdd 函数判断当前的 lstA[i]是否为奇数,因此需要使用调用函数语法 isOdd(IstA[i]),正确答案为 A 选项。

    8、有关下面代码正确的是( )。

    image

    A. checkNum() 函数定义错误。

    B. 将 isEven 作为 checkNum() 参数将导致错误。

    C. 执行后将输出 1 。

    D. 运行时触发异常。

    【答案】C

    【考纲知识点】 函数的定义、调用、值传递 【解析】本题考察函数指针的知识。isEven 是一个自定义函数,用于判断为偶数。checkNum 也是一个自定义函数,该函数的第一个参数是一个函数指针类型,需要传递一个函数,所传递的这个函数要求返回值为 bool,并且有一个 int 类型参数,isEven 函数复合该类型的要求,所以调用checkNum 函数时,第一个参数传递函数 isEven,第二个参数传递整数 10 没有错误,执行 checkNum 函数内部代码 Fx(N),也就是调用函数 isEven(10),整数 10 是偶数,因此最后调用的结果是1,因此正确答案选 C。

    9、有关下面C++代码正确的是( )。

    image

    A. checkNum() 函数定义错误。

    B. 输出行 A 的语句将导致编译错误。

    C. 输出行 B 的语句将导致编译错误。

    D. 该代码没有编译错误。

    【答案】C

    【考纲知识点】 函数指针 【解析】本题考察函数指针的知识。checkNum 函数的第一个参数需要传递一个返回值为 bool、参数为 int 类型的函数,isEven 函数复合该类型的要求,所以调用 checkNum 函数时,第一个参数传递函数 isEven,不会导致编译错误,Square函数的返回值是 int 类型,不符合 checkNum 函数的第一个参数的类型要求,因此调用时传递 Square 函数会导致编译错误,所以答案为 C 选项。

    10、下面代码执行后的输出是( )。

    image

    A. 4#3#2#2#4

    B. 4#3#2#2#1#5

    C. 4#3#2#1#2#4

    D. 4#3#2#1#2#5

    【答案】D

    【考纲知识点】 递归和函数

    【解析】本题属于考察递归和函数知识。第 13 行代码调用 jumFloor(4),首先输出 4#,然后返回 jumFloor(3)+ jumFloor(2),jumFloor(3)输出 3#再继续递归调用 jumFloor(2)+ jumFloor(1)依次输出 2#1#并返回 3。jumFloor(2)输出 2#返回 2,所以第 13 行代码调用之后的返回结果是 3+2=5,最后的输出结果就是 4#3#2#1#2#5,所以正确答案选 D。

    11、下面代码中的 isPrimeA() 和 isPrimeB() 都⽤于判断参数 N 是否素数,有关其时间复杂度的正确说法是( )。

    image

    A. isPrimeA() 的最坏时间复杂度是 O(N) , isPrimeB() 的最坏时间复杂度是O(log N) , isPrimeB() 优于 isPrimeA()。

    B. isPrimeA() 的最坏时间复杂度是 O(N) , isPrimeB() 的最坏时间复杂度是O(N12N^\frac{1}{2}), isPrimeB() 优于 isPrimeA()。

    C. isPrimeA() 的最坏时间复杂度是 O(N12N^\frac{1}{2}), isPrimeB() 的最坏时间复杂度是 O(N), isPrimeA()优于 isPrimeB()。

    D. isPrimeA() 的最坏时间复杂度是O(log N) , isPrimeB() 的最坏时间复杂度是 O(N), isPrimeA() 优于 isPrimeB()。 【答案】B

    【考纲知识点】 时间复杂度

    【解析】本题属于考察时间复杂度的相关知识。isPrimeA 的最坏时间复杂度是O(N),isPrimeB 的最坏时间复杂度是 O(N12N^\frac{1}{2}),O(N12N^\frac{1}{2})优于 O(N),正确答案 B 选项。

    12、下面代码用于归并排序,其中 merge() 函数被调用次数为( )。

    image

    A. 0

    B. 1

    C. 6

    D. 7

    【答案】C

    【考纲知识点】 分治算法

    【解析】本题考察归并排序的相关知识。listA 的长度为 7,根据递归返回的条件start >= end ,merge 函数会被调用 6 次,正确答案 C 选项。

    13、在上题的归并排序算法中, mergeSort(listData, start, middle); 和mergeSort(listData, middle + 1, end); 涉及到的算法为( )。

    A. 搜索算法

    B. 分治算法

    C. 贪⼼算法

    D. 递推算法

    【答案】B

    【考纲知识点】

    【解析】本题属于考察归并排序的相关知识。归并排序采用的是分治算法思想,正确答案 B 选项。

    14、归并排序算法的基本思想是( )。

    A. 将数组分成两个子数组,分别排序后再合并。

    B. 随机选择一个元素作为枢轴,将数组划分为两个部分。

    C. 从数组的最后一个元素开始,依次与前一个元素比较并交换位置。

    D. 比较相邻的两个元素,如果顺序错误就交换位置。

    【答案】A

    【考纲知识点】 归并排序算法

    【解析】本题属于考察归并排序的相关知识。归并排序基本思想就是将数组分成两个子数组,分别排序后再合并,正确答案 A 选项。

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

    image

    A. 上述代码构成单向链表。

    B. 上述代码构成双向链表。

    C. 上述代码构成循环链表。

    D. 上述代码构成指针链表。

    【答案】C

    【考纲知识点】 循环链表

    【解析】本题考察链表的相关知识。第 15 行代码~第 17 行代码创建了三个链表的节点,第一个节点的 next 指向第二个节点,第二个节点的 next 指向第三个节点,第三个节点的 next 又指向了第一个节点,形成了一个环,所以是循环链表,正确答案 C 选项。

    • 1

    GESP23年9月五级选择题

    信息

    ID
    660
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    46
    已通过
    13
    上传者