理论卷2023年12月GESP等级认证(C++) · 七级
GESP C++ 7级 2023.12
满分 100 · 及格 60 · 时长 60 分钟 · 共 27 题 (单选15 / 判断10 / 编程题2)
试卷阅览 · 免费预览前 10 题 · 交卷后可查看答案与解析
1
单选题号 #13138
分值 2定义变量 double x ,如果下面代码输入为 100 ,输出最接近( )。
#include
#include
#include
#include
using namespace std;
int main() {
double x;
cin >> x;
cout << log10(x) - log2(x) << endl;
cout << endl;
return 0;
}
A
0
B
-5
C
-8
D
8
2
单选题号 #13139
分值 2从顶点 v1 开始遍历下图 G 得到顶点访问序列,在下面所给的 4 个序列中符合广度优先的序列有几个?( )
, , , ,

A
4
B
3
C
2
D
1
3
单选题号 #13140
分值 2对于下面动态规划方法实现的函数,以下选项中最适合表达其状态转移函数的为()。
int s[MAX_N], f[MAX_N][MAX_N];
int stone_merge(int n, int a[]) {
for (int i = 1; i < n; i++)
s[i] = s[i - 1] + a[i];
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (i == j)
f[i][j] = 0;
else
f[i][j] = MAX_F;
for (int l = 1; l < n; l++)
for (int i = 1; i <= n - l; i++) {
int j = i + l;
for (int k = i; k < j; k++)
f[i][j] = min(f[i][j], f[i][k] + f[k + 1][j] + s[j] - s[i - 1]);
}
return f[1][n];
}
A

B

C

D

4
单选题号 #13141
分值 2下面代码可以用来求最长上升子序列(LIS)的长度,如果输入是: 5 1 7 3 5 9 ,则输出是( )。
int a[2023], f[2023];
int main() {
int n, i, j, ans = -1;
cin >> n;
for (i = 1; i > a[i];
f[i] = 1;
}
for (i = 1; i <= n; i++) {
for (j = 1; j < i; j++) {
if (a[j] < a[i]) {
f[i] = max(f[i], f[j] + 1);
}
}
}
for (i = 1; i <= n; i++) {
ans = max(ans, f[i]);
cout << f[i] << " ";
}
cout << ans << endl;
return 0;
}
A
9 7 5 1 1 9
B
1 2 2 3 4 4
C
1 3 5 7 9 9
D
1 1 1 1 1 1
5
单选题号 #13142
分值 2C++语言中,下列关于关键字 static 的描述不正确的是( )。
A
可以修饰类的成员函数。
B
常量静态成员可以在类外进行初始化。
C
若 a 是类 A 常量静态成员,则 a 的地址都可以访问且唯一。
D
静态全局对象一定在 main 函数调用前完成初始化,执行完 main 函数后被析构。
6
单选题号 #13143
分值 2G 是一个非连通无向图,共有 28 条边,则该图至少有( )个顶点。
A
6
B
7
C
8
D
9
7
单选题号 #13144
分值 2哈希表长31,按照下面的程序依次输入 4 17 28 30 4 ,则最后的 4 存入哪个位置?( )
#include
#include
#include
#include
using namespace std;
const int N = 31;
int htab[N], flag[N];
int main() {
int n, x, i, j, k;
cin >> n;
for (i = 0; i > x;
k = x % 13;
while (flag[k])
k = (k + 1) % 13;
htab[k] = x;
flag[k] = 1;
}
for (i = 0; i < N; i++)
cout << htab[i] << " ";
cout << endl;
return 0;
}
A
3
B
4
C
5
D
6
8
单选题号 #13145
分值 2某二叉树T的先序遍历序列为: {A B D F C E G H} ,中序遍历序列为: {B F D A G E H C} ,则下列说法中正确的是( )。
A
T的度为1
B
T的高为4
C
T有4个叶节点
D
以上说法都不对
9
单选题号 #13146
分值 2下面代码段可以求两个字符串 s1 和 s2 的最长公共子串(LCS),下列相关描述不正确的是( )。
while (cin >> s1 >> s2) {
memset(dp, 0, sizeof(dp));
int n1 = strlen(s1), n2 = strlen(s2);
for (int i = 1; i <= n1; ++i) {
for (int j = 1; j <= n2; ++j) {
if (s1[i - 1] == s2[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
cout << dp[n1][n2] << endl;
}
A
代码的时间复杂度为
B
代码的空间复杂度为
C
空间复杂度已经最优
D
采用了动态规划求解
10
单选题号 #13147
分值 2图的广度优先搜索中既要维护一个标志数组标志已访问的图的结点,还需哪种结构存放结点以实现遍历?( )
A
双向栈
B
队列
C
哈希表
D
堆
🔒
已解锁前 10 题
第 11~27 题(共 17 题)可在考试中作答
本卷为普通试卷:注册用户每题扣 1 积分(每日登录送 30 体验积分),交卷后查看答案与解析
