理论卷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 个序列中符合广度优先的序列有几个?( )
{v1,v2,v3,v4,v5}\{v1 ,v2, v3 ,v4, v5\} , {v1,v2,v4,v3,v5}\{v1 ,v2 ,v4 ,v3, v5\} , {v1,v4,v2,v3,v5}\{v1 ,v4 ,v2 ,v3, v5\} , {v1,v2,v4,v5,v3}\{v1 ,v2 ,v4 ,v5, v3\},
image.png

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

image.png

B

image.png

C

image.png

D

image.png

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
分值 2

C++语言中,下列关于关键字 static 的描述不正确的是( )。

A

可以修饰类的成员函数。

B

常量静态成员可以在类外进行初始化。

C

若 a 是类 A 常量静态成员,则 a 的地址都可以访问且唯一。

D

静态全局对象一定在 main 函数调用前完成初始化,执行完 main 函数后被析构。

6
单选题号 #13143
分值 2

G 是一个非连通无向图,共有 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

代码的时间复杂度为O(n2)O(n^2)

B

代码的空间复杂度为O(n2)O(n^2)

C

空间复杂度已经最优

D

采用了动态规划求解

10
单选题号 #13147
分值 2

图的广度优先搜索中既要维护一个标志数组标志已访问的图的结点,还需哪种结构存放结点以实现遍历?( )

A

双向栈

B

队列

C

哈希表

D

堆

🔒

已解锁前 10 题

第 11~27 题(共 17 题)可在考试中作答
本卷为普通试卷:注册用户每题扣 1 积分(每日登录送 30 体验积分),交卷后查看答案与解析
海小星AI平台海小星AI平台

点亮AI梦想,编程未来之星。专业的青少年AI编程教育平台。

课程方向

  • AIGC人工智能
  • Scratch图形化
  • Python编程
  • C++/NOIP竞赛

联系我们

  • 北京市西城区万博苑7号楼3层F28室
  • +86-010-83553010
  • contact@seanova.cn

© 2026 海小星AI平台|京ICP备2022032747号

隐私政策服务条款