1 条题解
-
1
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++代码说法错误的是( )。
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++代码以递归方式实现字符串反序,横线处应填上代码是( )。
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++代码以递归方式实现汉诺塔,横线处应填入代码是( )。
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++代码的注释,两个横线处应分别填⼊( )。
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、有关下面代码正确的是( )。
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++代码正确的是( )。
A. checkNum() 函数定义错误。
B. 输出行 A 的语句将导致编译错误。
C. 输出行 B 的语句将导致编译错误。
D. 该代码没有编译错误。
【答案】C
【考纲知识点】 函数指针 【解析】本题考察函数指针的知识。checkNum 函数的第一个参数需要传递一个返回值为 bool、参数为 int 类型的函数,isEven 函数复合该类型的要求,所以调用 checkNum 函数时,第一个参数传递函数 isEven,不会导致编译错误,Square函数的返回值是 int 类型,不符合 checkNum 函数的第一个参数的类型要求,因此调用时传递 Square 函数会导致编译错误,所以答案为 C 选项。
10、下面代码执行后的输出是( )。
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 是否素数,有关其时间复杂度的正确说法是( )。
A. isPrimeA() 的最坏时间复杂度是 O(N) , isPrimeB() 的最坏时间复杂度是O(log N) , isPrimeB() 优于 isPrimeA()。
B. isPrimeA() 的最坏时间复杂度是 O(N) , isPrimeB() 的最坏时间复杂度是O(), isPrimeB() 优于 isPrimeA()。
C. isPrimeA() 的最坏时间复杂度是 O(), isPrimeB() 的最坏时间复杂度是 O(N), isPrimeA()优于 isPrimeB()。
D. isPrimeA() 的最坏时间复杂度是O(log N) , isPrimeB() 的最坏时间复杂度是 O(N), isPrimeA() 优于 isPrimeB()。 【答案】B
【考纲知识点】 时间复杂度
【解析】本题属于考察时间复杂度的相关知识。isPrimeA 的最坏时间复杂度是O(N),isPrimeB 的最坏时间复杂度是 O(),O()优于 O(N),正确答案 B 选项。
12、下面代码用于归并排序,其中 merge() 函数被调用次数为( )。
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、有关下面代码的说法正确的是( )。
A. 上述代码构成单向链表。
B. 上述代码构成双向链表。
C. 上述代码构成循环链表。
D. 上述代码构成指针链表。
【答案】C
【考纲知识点】 循环链表
【解析】本题考察链表的相关知识。第 15 行代码~第 17 行代码创建了三个链表的节点,第一个节点的 next 指向第二个节点,第二个节点的 next 指向第三个节点,第三个节点的 next 又指向了第一个节点,形成了一个环,所以是循环链表,正确答案 C 选项。
- 1
信息
- ID
- 660
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 56
- 已通过
- 15
- 上传者