理论卷2025年3月GESP等级认证(C++) · 七级

GESP C++ 7级 2025.03

满分 100 · 及格 60 · 时长 60 分钟 · 共 27 题 (单选15 / 判断10 / 编程题2)
试卷阅览 · 免费预览前 10 题 · 交卷后可查看答案与解析
1
单选题号 #11673
分值 2

下列哪个选项是 C++ 中的关键字?

A

function

B

class

C

method

D

object

2
单选题号 #11674
分值 2

下面代码输出的是()

int main() {
 int a = 5, b = 2;
 cout > b) << endl;
}
A

11

B

22

C

55

D

1010

3
单选题号 #11675
分值 2

以下代码的输出是什么?

int main() {
 int a = 10;
 int *p = &a;
 int *&q = p;
 *q = 20;
 cout << a << endl;
 return 0;
}
A

1010

B

2020

C

地址值

D

编译错误

4
单选题号 #11676
分值 2

下面代码输出的是 ()

int main() { 
 int arr[5] = {1, 2, 3, 4, 5};
 int *p = arr + 2;
 cout << *p << endl;
 return 0;
}
A

11

B

22

C

33

D

44

5
单选题号 #11677
分值 2

下列关于排序的说法,正确的是 ( )。

A

选择排序是最快的排序算法之一。

B

归并排序通常是稳定的。

C

最差情况,NN 个元素做快速排序的时间复杂度为 O(N)O(N)

D

最好情况,NN 个元素做插入排序的时间复杂度为 O(N2)O(N ^2)。

6
单选题号 #11678
分值 2

下面关于 C++ 类构造和析构函数的说法,错误的是 ( )。

A

构造函数不能声明为虚函数。

B

析构函数必须声明为虚函数。

C

类的默认构造函数可以被声明为 private。

D

类的析构函数可以被声明为 private。

7
单选题号 #11679
分值 2

下列关于树和图的说法,错误的是 ( )。

A

树是一种有向无环图,但有向无环图不都是一棵树。

B

如果把树看做有向图,每个节点指向其子节点,则该图是强连通图。

C

NN 个顶点且连通的无向图,其最小生成树一定包含 N−1N-1 条边。

D

N+1N+1 个顶点、NN 条边的有向图,一定不是强连通的。

8
单选题号 #11680
分值 2

20252025 是个神奇的数字,因为它是由两个数 2020 和 2525 拼接而成,而且 2025=(20+25)22025=(20+25)^2。小杨决定写个程序找找小于 NN 的正整数中共有多少这样神奇的数字。下面程序横线处应填入的是 ( )。

#include 
int count_miracle(int N) {
 int cnt = 0;
 for (int n = 1; n * n < N; n++) { 
 int n2 = n * n;
 std::string s = std::to_string(n2);
 for (int i = 1; i < s.length(); i++)
 if (s[i] != '0') { 
 std::string sl = s.substr(0, i);
 std::string sr = s.substr(i);
 int nl = std::stoi(sl);
 int nr = std::stoi(sr); 
 if (_________) // 在此处填入选项
 cnt++;
 }
 }
 return cnt;
}
A

nl + nr == n

B

nl + nr == n2

C

(nl + nr) ∗ (nl + nr) == n

D

(nl + nr) ^2 == n2

9
单选题号 #11681
分值 2

给定一个无向图,图的节点编号从 00 到 n−1n - 1,图的边以邻接表的形式给出。下面的程序使用深度优先搜索 (DFS) 遍历该图,并输出遍历的节点顺序。横线处应该填入的是 ()

#include 
#include 
#include 
using namespace std;

void DFS(int start, vector>& graph, vector& visited) {
 stack s;
 s.push(start);
 visited[start] = true;

 while (!s.empty()) { 
 int node = s.top();
 s.pop(); 
 cout > n >> m;
 vector> graph(n);
 for (int i = 0; i > u >> v; 
 graph[u].push_back(v);
 graph[v].push_back(u); 
 }
 vector visited(n, false);
 // 从节点0开始DFS遍历 
 DFS(0, graph, visited);
 return 0;
}

A
visited[neighbor] = true; 
s.push(neighbor - 1);

C. 地址值

B
visited[neighbor] = true; 
s.push(neighbor + 1);
C
visited[neighbor] = false; 
s.push(neighbor);
D
visited[neighbor] = true; 
s.push(neighbor);
10
单选题号 #11682
分值 2

给定一个整数数组 nums,找到其中最长的严格上升子序列的长度。子序列是指从原数组中删除一些元素 (或不删除) 后,剩余元素保持原有顺序的序列。下面的程序横线处应该填入的是 ()

#include 
#include 
#include 
using namespace std;

int lengthOfLIS(vector& nums) {
 int n = nums.size();
 if (n == 0) return 0;
 vector dp(n, 1);
 for (int i = 1; i nums[j]) {
 ____________
 
 }
 }
 }
 return *max_element(dp.begin(), dp.end());
}

int main() {
 int n;
 cin >> n;
 vector nums(n);
 for (int i = 0; i > nums[i];
 }
 int result = lengthOfLIS(nums);
 cout << result << endl;
 return 0;
}
A

dp[i] = max(dp[i], dp[j]);

B

dp[i] = max(dp[i + 1], dp[j] + 1);

C

dp[i] = max(dp[i], dp[j] - 1);

D

dp[i] = max(dp[i], dp[j] + 1);

🔒

已解锁前 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号

隐私政策服务条款