GESP C++ 7级 2025.03
下列哪个选项是 C++ 中的关键字?
function
class
method
object
下面代码输出的是()
int main() {
int a = 5, b = 2;
cout > b) << endl;
}
以下代码的输出是什么?
int main() {
int a = 10;
int *p = &a;
int *&q = p;
*q = 20;
cout << a << endl;
return 0;
}
地址值
编译错误
下面代码输出的是 ()
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr + 2;
cout << *p << endl;
return 0;
}
下列关于排序的说法,正确的是 ( )。
选择排序是最快的排序算法之一。
归并排序通常是稳定的。
最差情况, 个元素做快速排序的时间复杂度为
最好情况, 个元素做插入排序的时间复杂度为 。
下面关于 C++ 类构造和析构函数的说法,错误的是 ( )。
构造函数不能声明为虚函数。
析构函数必须声明为虚函数。
类的默认构造函数可以被声明为 private。
类的析构函数可以被声明为 private。
下列关于树和图的说法,错误的是 ( )。
树是一种有向无环图,但有向无环图不都是一棵树。
如果把树看做有向图,每个节点指向其子节点,则该图是强连通图。
个顶点且连通的无向图,其最小生成树一定包含 条边。
个顶点、 条边的有向图,一定不是强连通的。
是个神奇的数字,因为它是由两个数 和 拼接而成,而且 。小杨决定写个程序找找小于 的正整数中共有多少这样神奇的数字。下面程序横线处应填入的是 ( )。
#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;
}
nl + nr == n
nl + nr == n2
(nl + nr) ∗ (nl + nr) == n
(nl + nr) ^2 == n2
给定一个无向图,图的节点编号从 到 ,图的边以邻接表的形式给出。下面的程序使用深度优先搜索 (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;
}
visited[neighbor] = true;
s.push(neighbor - 1);
C. 地址值
visited[neighbor] = true;
s.push(neighbor + 1);
visited[neighbor] = false;
s.push(neighbor);
visited[neighbor] = true;
s.push(neighbor);
给定一个整数数组 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;
}
dp[i] = max(dp[i], dp[j]);
dp[i] = max(dp[i + 1], dp[j] + 1);
dp[i] = max(dp[i], dp[j] - 1);
dp[i] = max(dp[i], dp[j] + 1);
