跳到主要内容
2025 年 12 月 GESP C++ 四级真题解析 | 极客日志
C++ 算法
2025 年 12 月 GESP C++ 四级真题解析 详细解析了 2025 年 12 月 GESP C++ 四级考试真题,涵盖单选题、判断题及两道编程题。内容涉及指针与地址运算、多维数组存储、排序稳定性判断、结构体与引用传递、函数默认参数等核心知识点。编程题包括基于滑动窗口的地形高度最大和计算,以及基于多条件排序的商品优先购买策略模拟,均提供了完整的 C++ 代码实现与逻辑说明。
奶糖兔 发布于 2026/3/29 更新于 2026/10/24 119 浏览一、单选题
第 1 题
解析:
答案 C,创建指针 int *p。获取 x 变量的地址 &x。
第 2 题
解析:
答案 C,
int a = 5 ;
int * p1 = &a;
int * p2 = p1;
*p2 = 10 ;
第 3 题
解析:
答案 B,下标从 0 开始,即 2 行 3 列为 a[2-1][3-1],也就是 a[1][2]。
第 4 题
解析:
答案 D,*(p+5) 就是 a[0][0] 往移动 5 个位置,即 a[1][1]。
第 5 题
解析:
i 循环为 0 1;j 循环为 0 1 2;k 循环:0 1。i+j+k 为偶数的情况有:
i j k
0 0 0:a[0][0][0]=1
0 1 1:a[0][1][1]=4
0 2 0:a[0][2][0]=5
1 1 0:a[1][1][0]=9
1 0 1:a[1][0][1]=8
1 2 1:a[1][2][1]=12
累加和为:1+4+5+9+8+12=39。
第 6 题
第 7 题
第 8 题
第 9 题
第 10 题 A:不稳定,{3,'D'} 和 {3,'B'}的相对位置变了
C:可以判断,{3,'D'} 和 {3,'B'}相对位置已经改变了
D:不稳定,{3,'D'} 和 {3,'B'}的相对位置变了
第 11 题
第 12 题
第 13 题
第 14 题
第 15 题
二、判断题
第 1 题 int x = 5 ;
int *p = &x;
*p = *p + 3 ;
第 2 题
struct name_struct {
string first_name;
string last_name;
};
struct student {
name_struct name;
int age;
};
第 3 题 多维数组都是按照最高维度的顺序存储,例如 a[5][5][5]:
a[0][0][0] → a[0][0][1] → a[0][0][2] → a[0][0][3] → a[0][0][4]
a[0][1][0] → a[0][1][1] → a[0][1][2] → a[0][1][3] → a[0][1][4]
...
a[1][0][0] → a[1][0][1] → ... → a[1][4][4]
第 4 题
第 5 题 int arr[5 ] = {1 ,2 ,3 ,4 ,5 };
int * p1 = arr;
int * p2 = arr+2 ;
cout<<p2<<endl;
cout<<p1<<endl;
cout<<p2-p1;
第 6 题 答案√,时间复杂度描述的是算法执行时间随输入规模增长的量级,而非精确的执行次数,所以循环 n-1 次的时间复杂度是 O(n)。
第 7 题 答案√,选择、希尔、快速、堆排序不稳定,其他都是稳定。
第 8 题
第 9 题 答案×,会调用'return xy'的函数,只传递 5,y 就为默认值 10,即 5 10=50。
第 10 题 答案√,fin 会根据空格和换行分别给 a b c d 变量赋值,即 a=10 b=20 c=30 d=40。
三、编程题
第 1 题 [GESP202512 四级] 建造
题目描述 小 A 有一张 M 行 N 列的地形图,其中第 i 行第 j 列的数字 aij 代表坐标 (i,j) 的海拔高度。
停机坪为一个 3×3 的区域,且内部所有 9 个点的最大高度和最小高度之差不超过 H。
小 A 想请你计算出,在所有适合建造停机坪的区域中,区域内部 9 个点海拔之和最大是多少。
输入格式 之后 M 行,第 i 行包含 N 个整数 ai1,ai2,…,aiN,代表坐标 (i,j) 的高度。
输出格式
输入输出样例 5 5 3
5 5 5 5 5
5 1 5 1 5
5 5 5 5 5
5 2 5 2 5
3 5 5 5 2
说明/提示
数据范围 对于所有测试点,保证 1 ≤ M,N ≤ 10^3,1 ≤ H, aij ≤ 10^5。
答案 #include <bits/stdc++.h>
using namespace std;
int a[1010 ][1010 ];
int main () {
int m,n,h;
cin>>m>>n>>h;
for (int i=1 ;i<=m;i++){
for (int j=1 ;j<=n;j++){
cin>>a[i][j];
}
}
int ans=0 ;
for (int r_i=3 ;r_i<=m;r_i++){
for (int r_j=3 ;r_j<=n;r_j++){
int maxx=INT_MIN,minn=INT_MAX,sum=0 ;
for (int i=r_i-2 ;i<=r_i;i++){
for (int j=r_j-2 ;j<=r_j;j++){
maxx = max (maxx,a[i][j]);
minn = min (minn,a[i][j]);
sum+=a[i][j];
}
}
if ( maxx-minn<=h ){
if ( sum>ans ) ans=sum;
}
}
}
cout<<ans;
}
第 2 题 [GESP202512 四级] 优先购买
题目描述 小 A 有 M 元预算。商店有 N 个商品,每个商品有商品名 S、价格 P 和优先级 V 三种属性,其中 V 为正整数,且 V 越小代表商品的优先级越高。
总是优先买优先级最高的东西;
如果有多个最高优先级商品,购买价格最低的;
如果有多个优先级最高且价格最低的商品,购买商品名字典序最小的。
输入格式 之后 N 行,每行一个商品,依次为 Si Pi Vi,代表第 i 个商品的商品名、价格、优先级。
输出格式 按照字典序从小到大的顺序,输出所有购买商品的商品名。
输入输出样例 20 4
apple 6 8
bus 15 1
cab 1 10
water 4 8
说明/提示
数据范围 对于所有测试点,保证 1 ≤ |Si| ≤ 10,1 ≤ M,Pi ≤ 10^5,1 ≤ N ≤ 10^3,1 ≤ Vi ≤ 10。商品名仅由小写字母组成且不存在两个相同的商品名。
答案 #include <bits/stdc++.h>
using namespace std;
struct goods {
string s;
int p,v;
}a[1010 ];
bool cmp (goods a,goods b) {
if (a.v!=b.v) return a.v<b.v;
if (a.p!=b.p) return a.p<b.p;
return a.s<b.s;
}
bool cmp2 (string a,string b) {
return a<b;
}
int main () {
int m,n;
cin>>m>>n;
for (int i=1 ;i<=n;i++){
cin>>a[i].s>>a[i].p>>a[i].v;
}
sort (a+1 ,a+n+1 ,cmp);
string ans[1010 ];
int ans_size=0 ;
for (int i=1 ;i<=n;i++){
if (m>=a[i].p){
m-=a[i].p;
ans_size++;
ans[ans_size]=a[i].s;
if (m==0 ) break ;
}
}
sort (ans+1 ,ans+ans_size+1 ,cmp2);
for (int i=1 ;i<=ans_size;i++) cout<<ans[i]<<endl;
}
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online