CCF GESP 2025年9月认证 C++ 7级
一
单选题
第 1 题
已知小写字母 b 的 ASCII 码为 $98$,下列 C++ 代码的输出结果是( )。
#include <iostream>
using namespace std;
int main() {
char a = 'b' + 1;
cout << a;
return 0;
}
第 2 题
已知 a 为 int 类型变量,p 为 int * 类型变量,下列表达式不符合语法的是( )。
第 3 题
下列关于 C++ 类的说法,错误的是( )。
第 4 题
已知数组 a 的定义 int a[10] = {-1};,下列说法不正确的是( )。
第 5 题
一棵完全二叉树有 $165$ 个结点,则叶结点有多少个?( )
第 6 题
下列关于二叉树的说法,错误的是( )。
第 7 题
下列关于树和图的说法,错误的是( )。
第 8 题
对一个包含 $V$ 个顶点、$E$ 条边的图,执行广度优先搜索,其最优时间复杂度是( )。
第 9 题
以下哪个方案不能合理解决或缓解哈希表冲突( )。
第 10 题
以下关于贪心法和动态规划的说法中,错误的是( )。
第 11 题
下面程序的输出为( )。
#include <iostream>
using namespace std;
int fib(int n) {
if (n == 0)
return 1;
return fib(n - 1) + fib(n - 2);
}
int main() {
cout << fib(6) << endl;
return 0;
}
第 12 题
下面程序的时间复杂度为( )。
int rec_fib[MAX_N];
int fib(int n) {
if (n <= 1)
return n;
if (rec_fib[n] != 0)
return rec_fib[n];
return fib(n - 1) + fib(n - 2);
}
第 13 题
下面 init_sieve 函数的时间复杂度为( )。
int sieve[MAX_N];
void init_sieve(int n) {
for (int i = 1; i <= n; i++)
sieve[i] = i;
for (int i = 2; i <= n; i++)
for (int j = i; j <= n; j += i)
sieve[j]--;
}
第 14 题
下面 count_triple 函数的时间复杂度为( )。
int gcd(int m, int n) {
if (m == 0) return n;
return gcd(n % m, m);
}
int count_triple(int n) {
int cnt = 0;
for (int v = 1; v * v * 4 <= n; v++)
for (int u = v + 1; u * (u + v) * 2 <= n; u += 2)
if (gcd(u, v) == 1) {
int a = u * u - v * v;
int b = u * v * 2;
int c = u * u + v * v;
cnt += n / (a + b + c);
}
return cnt;
}
第 15 题
下列选项中,哪个不可能是下图的深度优先遍历序列( )。

单选题部分已到底了。