欢迎光临
我们一直在努力

2025年6月GESP真题及题解(C++七级): 选择题和判断题(题解)

2025年6月GESP真题及题解(C++七级): 选择题和判断题(题解)

在这里插入图片描述 第 1 题

已知小写字母 b 的 ASCII 码为 98,下列 C++ 代码的输出结果是( )。

#include <iostream>
using namespace std;

int main() {
char a = 'b' ^ 4;
cout << a;
return 0;
}

A. b

B. bbbb

C. f

D. 102

答案:C 题解:字符 'b' 的 ASCII 码为 98,98 ^ 4 = 102,对应 ASCII 码 102 的字符是 'f'。故输出 f。

第 2 题

已知 a 为 int 类型变量,p 为 int * 类型变量,下列赋值语句不符合语法的是( )。

A. *(p + a) = *p;

B. *(p – a) = a;

C. p + a = p;

D. p = p + a;

答案:C 题解:p + a 是指针加法表达式,结果为右值,不能作为左值被赋值。其余选项均合法。

第 3 题

下列关于 C++ 类的说法,错误的是( )。

A. 如需要使用基类的指针释放派生类对象,基类的析构函数应声明为虚析构函数。

B. 构造派生类对象时,只调用派生类的构造函数,不会调用基类的构造函数。

C. 基类和派生类分别实现了同一个虚函数,派生类对象仍能够调用基类的该方法。

D. 如果函数形参为基类指针,调用时可以传入派生类指针作为实参。

答案:B 题解:构造派生类对象时,会先调用基类的构造函数,再调用派生类的构造函数。因此 B 错误。其他选项正确:A 虚析构函数用于正确释放派生类对象;C 可通过基类作用域调用基类虚函数;D 派生类指针可隐式转换为基类指针。

第 4 题

下列 C++ 代码的输出是( )。

#include <iostream>
using namespace std;

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

A. 6

B. 8

C. 编译出错,无法运行。

D. 不确定,可能发生运行时异常。

答案:D 题解:p 指向 arr[2](值为 6),p[3] 等价于 *(p+3),即访问 arr[5],数组越界,行为未定义,可能输出不确定值或引发运行时异常。

第 5 题

假定只有一个根节点的树的深度为 1,则一棵有 N个节点的完全二叉树,则树的深度为( )。

A. ⌊log⁡2(N)⌋+1

B. ⌊log⁡2(N)⌋

C. ⌈log⁡2(N)⌉

D. 不能确定。

答案:A 题解:完全二叉树的深度为 ⌊log₂N⌋ + 1(根深度为 1)。例如 N=1 时深度为 1,N=2 时深度为 2,符合公式。

第 6 题

对于如下图的二叉树,说法正确的是( )。

在这里插入图片描述

A. 先序遍历是 ABDEC

B. 中序遍历是 BDACE

C. 后序遍历是 DBCEA

D. 广度优先遍历是 ABCDE

答案:D 题解:根据给定的二叉树图,分析各遍历序列。先序、中序、后序均与选项不符,而广度优先遍历(层次遍历)为 ABCDE,故 D 正确。

第 7 题

图的存储和遍历算法,下面说法错误的是( )。

A. 图的深度优先遍历须要借助队列来完成。

B. 图的深度优先遍历和广度优先遍历对有向图和无向图都适用。

C. 使用邻接矩阵存储一个包含 v个顶点的有向图,统计其边数的时间复杂度为 O(v

2

^2

2)。

D. 同一个图分别使用出边邻接表和入边邻接表存储,其边结点个数相同。

答案:A 题解:图的深度优先遍历通常借助栈(递归或显式栈)实现,广度优先遍历才需要队列。因此 A 错误。其余选项正确。

第 8 题

一个连通的简单有向图,共有 28 条边,则该图至少有( )个顶点。

A. 5

B. 6

C. 7

D. 8

答案:B 题解:简单有向图最多有 n(n-1) 条边。要使边数为 28,需满足 n(n-1) ≥ 28,n=6 时 6×5=30≥28,n=5 时 5×4=20<28,故至少需要 6 个顶点。

第 9 题

以下哪个方案不能合理解决或缓解哈希表冲突( )。

A. 在每个哈希表项处,使用不同的哈希函数再建立一个哈希表,管理该表项的冲突元素。

B. 在每个哈希表项处,建立二叉排序树,管理该表项的冲突元素。

C. 使用不同的哈希函数建立额外的哈希表,用来管理所有发生冲突的元素。

D. 覆盖发生冲突的旧元素。

答案:D 题解:覆盖冲突元素会导致数据丢失,不是合理的冲突解决方法。其他选项均为常见解决策略:A 再哈希法,B 链地址法(用树),C 建立额外哈希表。

第 10 题

以下关于动态规划的说法中,错误的是( )。

A. 动态规划方法通常能够列出递推公式。

B. 动态规划方法的时间复杂度通常为状态的个数。

C. 动态规划方法有递推和递归两种实现形式。

D. 对很多问题,递推实现和递归实现动态规划方法的时间复杂度相当。

答案:B 题解:动态规划的时间复杂度通常为状态数乘以每个状态转移的时间,不一定等于状态个数。其他选项正确。

第 11 题

下面程序的输出为( )。

#include <iostream>
using namespace std;
int rec_fib[100];
int fib(int n) {
if (n <= 1)
return n;
if (rec_fib[n] == 0)
rec_fib[n] = fib(n 1) + fib(n 2);
return rec_fib[n];
}
int main() {
cout << fib(6) << endl;
return 0;
}

A. 8

B. 13

C. 64

D. 结果是随机的。

答案:A 题解:带记忆化的斐波那契函数,fib(6) 计算得 8(斐波那契数列:0,1,1,2,3,5,8)。

第 12 题

下面程序的时间复杂度为( )。

int rec_fib[MAX_N];
int fib(int n) {
if (n <= 1)
return n;
if (rec_fib[n] == 0)
rec_fib[n] = fib(n 1) + fib(n 2);
return rec_fib[n];
}

A. O(2

n

^n

n)

B. O(ϕ

n

^n

n), ϕ=

5

1

2

\\frac{\\sqrt{5}-1}{2}

25

1

C. O(n

2

^2

2)

D. O(n)

答案:D 题解:带记忆化的斐波那契每个 n 只计算一次,时间复杂度为 O(n)。

第 13 题

下面 search 函数的平均时间复杂度为( )。

int search(int n, int * p, int target) {
int low = 0, high = n;
while (low < high) {
int middle = (low + high) / 2;
if (target == p[middle]) {
return middle;
} else if (target > p[middle]) {
low = middle + 1;
} else {
high = middle;
}
}
return 1;
}

A. O(nlog⁡(n))

B. O(n)

C. O(log⁡(n))

D. O(1)

答案:C 题解:二分查找每次将搜索区间减半,平均时间复杂度为 O(log n)。

第 14 题

下面程序的时间复杂度为( )。

int primes[MAXP], num = 0;
bool isPrime[MAXN] = {false};
void sieve() {
for (int n = 2; n <= MAXN; n++) {
if (!isPrime[n])
primes[num++] = n;
for (int i = 0; i < num && n * primes[i] <= MAXN; i++) {
isPrime[n * primes[i]] = true;
if (n % primes[i] == 0)
break;
}
}
}

A. O(n)

B. O(n×log⁡n)

C. O(n×log⁡log⁡n)

D. O(n

2

^2

2)

答案:A 题解:该代码为线性筛法(欧拉筛),每个合数被其最小质因子筛掉一次,时间复杂度 O(n)。

第 15 题

下列选项中,哪个不可能是下图的广度优先遍历序列( )。 在这里插入图片描述

A. 1, 2, 4, 5, 3, 7, 6, 8, 9

B. 1, 2, 5, 4, 3, 7, 8, 6, 9

C. 1, 4, 5, 2, 7, 3, 8, 6, 9

D. 1, 5, 4, 2, 7, 3, 8, 6, 9

答案:B 题解:根据给定的图,分析广度优先遍历的可能序列。选项 D 中节点顺序违反 BFS 的层次关系(前面1 2 5 4 3 7 没问题,后面根据广搜的算法原理应该为 6 8 9 ),故不可能。

第 16 题

C++ 语言中,表达式 9 & 12 的结果类型为 int 、值为 8 。

A. 正确

B. 错误

答案:A 题解:9 & 12 二进制分别为 1001 和 1100,按位与得 1000,即 8,结果为 int 类型,正确。

第 17 题

C++ 语言中,指针变量指向的内存地址不一定都能够合法访问。

A. 正确

B. 错误

答案:A 题解:指针变量可能指向非法地址(如野指针),不一定都能合法访问,正确。

第 18 题

对 n个元素的数组进行快速排序,最差情况的时间复杂度为 O(nlog⁡n)。

A. 正确

B. 错误

答案:B 题解:快速排序最坏情况(如数组已有序)时间复杂度为 O(n²),不是 O(n log n)。

第 19 题

一般情况下, long long 类型占用的字节数比 float 类型多。

A. 正确

B. 错误

答案:A 题解:一般情况下,long long 占 8 字节,float 占 4 字节,前者字节数更多,正确。

第 20 题

使用 math.h 或 cmath 头文件中的函数,表达式 pow(10, 3) 的结果的值为 1000 、类型为 int 。

A. 正确

B. 错误

答案:B 题解:pow(10, 3) 返回 double 类型,值为 1000.0,不是 int 类型。

第 21 题

二叉排序树的中序遍历序列一定是有序的。

A. 正确

B. 错误

答案:A 题解:二叉排序树的中序遍历序列一定是递增有序的,正确。

第 22 题

无论哈希表采用何种方式解决冲突,只要管理的元素足够多,都无法避免冲突。

A. 正确

B. 错误

答案:A 题解:哈希函数将无限域映射到有限域,无论采用何种冲突解决方式,当元素足够多时必然发生冲突,正确。

第 23 题

在 C++ 语言中,类的构造函数和析构函数均可以声明为虚函数。

A. 正确

B. 错误

答案:B 题解:C++ 中构造函数不能声明为虚函数,析构函数可以,故错误。

第 24 题

动态规划方法将原问题分解为一个或多个相似的子问题,因此必须使用递归实现。

A. 正确

B. 错误

答案:B 题解:动态规划可以用递推(迭代)实现,不一定必须用递归,故错误。

第 25 题

如果将城市视作顶点,公路视作边,将城际公路网络抽象为简单图,可以满足城市间的车道级导航需求。

A. 正确

B. 错误

答案:B 题解:简单图只表示顶点和边,无法满足车道级导航所需的详细道路信息(如车道数、方向等),故错误。

完整GESP C++考级真题题解专栏:

在这里插入图片描述

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

在这里插入图片描述

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

在这里插入图片描述 GESP(C++ 七级+八级)真题题解(持续更新): https://blog.csdn.net/weixin_66461496/category_13117178.html

更多csp信奥赛C++学习资料汇总:

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转 在这里插入图片描述

3、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划: https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL: https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践: https://blog.csdn.net/weixin_66461496/category_13113932.html

4、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新) https://blog.csdn.net/weixin_66461496/category_13125089.html

· 文末祝福 ·

#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"跟着王老师一起学习信奥赛C++";
cout<<" 成就更好的自己! ";
cout<<" csp信奥赛一等奖属于你! ";
return 0;
}

赞(0)
未经允许不得转载:171主机测评 » 2025年6月GESP真题及题解(C++七级): 选择题和判断题(题解)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址