GESP_2026年06月_C++七级试卷

从PDF导入:GESP_2026年06月_C++七级试卷

C++ 180分钟 总分 100.0 27 题
试卷题目预览
第1题 中级 2.0分 单选
下列C++代码的输出结果是( )。

#include 
#include
using namespace std;

int main() {
cout << (int)(sqrt(50) + log2(8));
return 0;
}

A. 9
B. 10
C. 11
D. 12
第2题 中级 2.0分 单选
下列关于<cmath>或<math.h>中的数学库函数的说法,正确的是( )。
A. sqrt(49)的返回值可以参与浮点运算。
B. log2(32)的返回值类型为int。
C. pow(2, 5)的返回值类型一定为int。
D. sin(90)的参数90表示90度。
第3题 中级 2.0分 单选
下列关于C++函数参数传递的说法,正确的是( )。
A. 函数形参一定和实参使用同一块内存。
B. 值传递时,在函数内修改形参一定会修改实参。
C. 引用形参绑定到实参后,在函数内修改引用形参通常会影响实参。
D. 指针形参不能用于修改实参指向的数据。
第4题 中级 2.0分 单选
有5个字符,它们出现的次数分别为3、4、5、6、7。使用哈夫曼编码时,最小的带权路径长度WPL为( )。
A. 62
B. 64
C. 67
D. 69
第5题 中级 2.0分 单选
已知网格上每个网格点有一个数字,a[i][j]表示第i行第j列处网格点上的数字。若dp[i][j]表示从网格左上角(第0行第0列)走到第i行第j列时能取得的最大数字和,且每次只能向右或向下移动。对 于 i > 0 且 j > 0 的位置,正确的状态转移代码为( )。

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

第6题 中级 2.0分 单选
已知f[0]=0,f[1]=2,并且对i>=2有f[i]=max(f[i-1], f[i-2]+a[i])。若a[1..5]={2,7,9,3,1},则f[5] 的值为( )。
A. 10
B. 11
C. 12
D. 22
第7题 中级 2.0分 单选
下面代码是一维数组优化0/1背包的核心片段,其中w[i]表示第i件物品的重量,v[i]表示第i件物品的价值。横线处应填入( )。

for (int i = 1; i <= n; i++) {
for (int c = W; c >= w[i]; c--) {
________________;
}
}
dp[c] = max(dp[c], dp[c + w[i]] + v[i]);
dp[c] = min(dp[c], dp[c - w[i]] + v[i]);
dp[c] = dp[c - w[i]] + v[i];
dp[c] = max(dp[c], dp[c - w[i]] + v[i]);

第8题 中级 2.0分 单选
下面程序片段主要体现的算法思想是( )。

void dfs(int x, int y) {
vis[x][y] = true;
for (int k = 0; k < 4; k++) {
int nx = x + dx[k], ny = y + dy[k];
if (inside(nx, ny) && a[nx][ny] == 1 && !vis[nx][ny])
dfs(nx, ny);
}
}

A. 泛洪算法
B. 二分查找
C. 贪心算法
D. 归并排序
第9题 中级 2.0分 单选
下列关于排序稳定性的说法,正确的是( )。
A. 冒泡排序在只交换相邻逆序元素时是稳定排序
B. 选择排序一定是稳定排序
C. 快速排序一定是稳定排序
D. 稳定排序一定会改变相等元素的相对顺序
第10题 中级 2.0分 单选
无向图的边为(1,2),(1,3),(2,4),(3,4),(4,5)。从顶点1开始进行BFS,每轮根据出队顶点,将与其相邻顶点按编号从小到大入队,则顶点4第一次入队时,队列的状态为( )。
A. 1, 2, 3, 4
B. 2, 3, 4
C. 3, 4
D. 3, 4, 5
第11题 中级 2.0分 单选
一个长度为11、下标为0到10的哈希表采用线性探测法处理冲突,哈希函数为h(x)=x%11。依次插入22、33、4、15、26,则26最终存放在下标( )。
A. 0
B. 4
C. 5
D. 6
第12题 中级 2.0分 单选
关于哈希表处理冲突的方法,下列说法正确的是( )。
A. 线性探测法发生冲突后,只能放弃插入该元素。
B. 链地址法可以把哈希到同一位置的多个元素组织在同一个桶中。
C. 只要哈希表长度是素数,就一定不会发生冲突。
D. 开放定址法查找元素时不需要考虑冲突位置。
第13题 中级 2.0分 单选
某算法需要枚举n个对象;对每个对象,还需要进行一次二分查找。若二分查找的对象规模也是n,则该算法的时间复杂度通常为( )。
A. O(n)
B. O(nlogn)
C. O(n²)
D. O(logn)
第14题 中级 2.0分 单选
在升序数组中用二分查找第一个大于等于x的位置。若当前中点mid满足a[mid]<x,下一步应( )。
A. 令闭区间右边界变为mid-1
B. 令闭区间左边界变为mid+1
C. 立即返回mid
D. 交换a[mid]与x
第15题 中级 2.0分 单选
在如下网格中,#表示不能经过的格子,.表示可以经过的格子。从左上角走到右下角,每次只能向右或向下移动,不同路径共有( )条。

. . . . .
. # . # .
. . . . .
. # . . .
. . . # .

A. 5
B. 6
C. 7
D. 8
第16题 中级 2.0分 判断
使用<cmath>或<math.h>中的三角函数时,角度参数默认采用角度制。
T. 正确
F. 错误
第17题 中级 2.0分 判断
使用<cmath>或<math.h>中的pow(2,10)计算2¹⁰时,由于参数均为整型int,返回值类型也为整型int。
T. 正确
F. 错误
第18题 中级 2.0分 判断
0/1背包使用一维数组优化时,容量从小到大枚举也能保证每件物品最多被选一次。
T. 正确
F. 错误
第19题 中级 2.0分 判断
哈希表采用开放定址法时,即使哈希函数设计合理,也仍然可能发生冲突。
T. 正确
F. 错误
第20题 中级 2.0分 判断
同一个图从同一个起点进行深度优先搜索,访问序列一定与邻接点的枚举顺序无关。
T. 正确
F. 错误
第21题 中级 2.0分 判断
泛洪算法可以用递归DFS实现,但地图很大时可能由于递归层数过深导致调用栈溢出等运行时错误。
T. 正确
F. 错误
第22题 中级 2.0分 判断
哈夫曼树中不存在度为1的结点。
T. 正确
F. 错误
第23题 中级 2.0分 判断
冒泡排序的常见实现是稳定排序,选择排序也是。
T. 正确
F. 错误
第24题 中级 2.0分 判断
在无权图中从起点执行BFS时,某个顶点第一次被访问到的层数等于起点到该顶点经过的最少边数。
T. 正确
F. 错误
第25题 中级 2.0分 判断
在二维动态规划中,状态dp[i][j]的计算常常依赖其他状态,这些状态的计算必须在完成dp[i][j]的计算前完成。
T. 正确
F. 错误
第26题 中级 25.0分 编程
:染色

小杨同学有一张包含n个结点的无向图G,G中的结点依次以1,2,…,n编号。小杨同学发现G中每个结点的度数都是2。显然G中恰好有n条边。小杨同学想为G中的结点染色,使得任意一条边两端的结点都有不同的颜色。小杨同学想知道最少需要多少种颜色才能在满足条件的前提下为G染色。
对于40%的测试点,保证n≤500,n指每个输入中多组数据的n的总和。
对于所有测试点,保证1≤t≤100,3≤n≤10⁵,∑n≤10⁵。
保证G中没有重边与自环。

【输入格式】
本题包含多组数据。
第一行,一个正整数t,表示数据组数。
对于每组数据:
第一行,一个正整数n,表示无向图G中的结点数。
接下来n行,每行两个正整数ui,vi,表示一条连接结点ui与vi的无向边,整数之间以空格分隔。
保证G中没有重边与自环。
【输出格式】
对于每组数据:输出一行,一个整数,表示在满足条件的前提下为G染色需要的最少颜色数。
【样例】
6
1
2 3
3
1 2
2 3
3 1
4
1 2
2 3
3 4
4 1
5
1 2
2 3
3 4
4 5
5 1
6
1 2
2 3
3 4
4 5
5 6
6 1
【样例解释】
2
3
2
3
2
2
第27题 中级 25.0分 编程
:消消乐

给定一个由n个整数构成的数组a=[a₁,…,aₙ]。每次你可以对数组a进行以下操作,直到数组a变为空:
指定a中的一个元素,获得该元素两侧相邻元素之和的分数,并将该元素从a中删去。
特别地,如果相邻元素不存在则该元素的值视为0。例如,对于a=[1,2,3]可以进行以下操作:
指定元素2,获得分数1+3,删去2后a=[1,3];
指定元素1,获得分数0+3,删去1后a=[3];
指定元素3,获得分数0+0,删去3后a变为空。
请问你能获得的分数总和最大是多少?
对于40%的测试点,保证1≤n≤5,0≤aᵢ≤10³。
对于所有测试点,保证1≤n≤100,0≤aᵢ≤10⁹。

【输入格式】
第一行,一个正整数n,表示数组长度。
第二行,n个非负整数a₁,…,aₙ,表示数组a中的整数。
【输出格式】
输出一行,一个整数,表示能获得的最大分数总和。
【样例】
6
1 6 3 2 9 11

5
3 1415 926 53 58
【样例解释】
55

5771
💬