题号 1 2 3 4 5 6 7 8 9 10 11 1 2 13 14 15
答 案 B C D C D B A B A C C B C A B
C ++ 七级
2024 年 0 3 ⽉
1 单选题(每题 2 分,共 30 分)
第 1 题 下 列关于排序的说法,正确的是 ( ) 。
A. 冒 泡排序是最快的排序算法之⼀。
B. 快 速排序通常是不稳定的。
C. 最 差情况, 个元素做归并排序的时间复杂度为 。
D. 以 上均不正确。
第 2 题 下 ⾯的程序属于哪种算法 ( ) 。
A. 贪 ⼼算法
B. 动 态规划
C. 深 度优先搜索
D. ⼴ 度优先搜索
int pos [8];
void queen (int n) {
for ( int i = 0; i < 8; i++ ) {
pos [n] = i;
bool attacked = false ;
for ( int j = 0; j < n; j++ )
if ( pos [n] == pos [j] || pos [n] + n == pos [j] + j || pos [n] - n == pos [j]
- j) {
attacked = true ;
break ;
}
if ( attacked )
continue ;
if ( n == 7) {
return ;
} else {
queen (n + 1);
}
}
}
1
2
3
4
5
6
7
8
9
1 0
11
12
13
14
15
16
17
18
19
第 3 题 下 ⾯有关 C++ 类的说法,错误的是( )。
A. C ++ 类对象销毁时,会执⾏析构函数。
B. C ++ 类可以通过定义构造函数实现⾃动类型转换 。
C. C ++ 类可以通过重载 [] 运 算符实现通过给定下标访问数组成员的元素。
D. C ++ 类可以包含任意类型的成员变量。
第 4 题 ⼀ 个连通的简单⽆向图,共有 28 条边,则该图⾄少有 ( ) 个顶点。
A. 6
B . 7
C . 8
D . 9
第 5 题 以 下哪个⽅案不能合理解决或缓解哈希表冲突( )。
A. 在 每个哈希表项处,使⽤单链表管理该表项的冲突元素。
B. 建 ⽴额外的单链表,⽤来管理所有发⽣冲突的元素。
C. 使 ⽤不同的哈希函数再建⽴⼀个哈希表,⽤来管理所有发⽣冲突的元素。
D. ⽤ 新元素覆盖发⽣冲突的哈希表项。
第 6 题 已 知⼀颗⼆叉树的中序遍历序列为: {C F B A E D G } ,后序遍历序列为: {F C B E G D A } ,则下列说法中正
确 的是 ( ) 。
A. 该 树是平衡⼆叉树。
B. 该 树的⾼为 4 。
C. 该 树有 4 个叶节点。
D. 以 上说法都不对。
第 7 题 以 下关于⼆叉排序树的说法,正确的是( )。
A. ⼆ 叉排序树的中序遍历序列⼀定是有序的。
B. 在 含 n 个节点的⼆叉排序树中查找元素,最差情况的时间复杂度为 。
C. ⼆ 叉排序树⼀定是⼆叉平衡树。
D. 以 上说法都不对。
第 8 题 已 知 x 为 double 类 型的变量,且值⼤于 0 ,则下列表达式的值⼀定 ⼤于 0 的是 ( ) 。
A. sin(x) / x
B . exp(x) - x
C . log(x) - x
D . x * x - x
第 9 题 ⼀ 个简单有向图有 10 个结点、 30 条边。再增加多少条边可以成为完全图。( )
A. 6 0
B . 7 0
C . 1 5
D . 2 0
第 1 0 题 下 列选项中,哪个可能是下图的深度优先遍历序 列( )。
A. 8 , 6 , 1 , 5 , 3 , 4 , 2 , 1 0, 7 , 1 2, 1 1 , 9
B . 7 , 8 , 6 , 4 , 2 , 1 , 5 , 3 , 1 2, 9 , 1 1 , 1 0 。
C. 8 , 1 0, 1 2, 9 , 1 1 , 4 , 5 , 3 , 2 , 1 , 6 , 7
D . 7 , 8 , 1 0, 9 , 1 1 , 1 2, 4 , 5 , 1 , 2 , 3 , 6 。
第 1 1 题 下 ⾯ schedule 函 数的时间复杂度为 ( ) 。
A.
B.
C .
D.
第 1 2 题 下 ⾯ search 函 数的平均时间复杂度为 ( ) 。
#include <algorithm>
using namespace std ;
struct activity {
int id , start , end ;
};
bool compare (activity a, activity b) {
return a.end < b.end ;
}
int schedule (int n, activity * p) {
sort (p, p + n, compare );
int cnt = 0, end = 0;
for ( int i = 0; i < n; i++ ) {
if ( p[i]. start >= end ) {
end = p[i]. end ;
cnt ++ ;
}
}
return cnt ;
}
1
2
3
4
5
6
7
8
9
1 0
11
12
13
14
15
16
17
18
19
A.
B.
C .
D. 可 能⽆法返回
第 1 3 题 下 ⾯ count_triple 函 数的时间复杂度为 ( ) 。
A.
B.
C .
D.
第 1 4 题 下 ⾯程序的输出为( )。
int search (int n, int * p, int target ) {
int low = 0, high = n;
while ( low <= high ) {
int middle = ( low + high ) / 2;
if ( target == p[middle ]) {
return middle ;
} else if ( target > p[middle ]) {
low = middle + 1;
} else {
high = middle - 1;
GESP 3月认证C++七级真题,2024年3月GESP等级认证C++编程七级真题及答案