GESP 2026年3月_C++四级试卷

从PDF导入:GESP 2026年3月_C++四级试卷

C++ 120分钟 总分 100.0 27 题
试卷题目预览
第1题 中级 2.0分 单选
执行下面程序后,输出为( )。

int f(int x = 2) {
return x * 3;
}
int main() {
cout << f() << " " << f(4);
}

A. 2 12
B. 6 12
C. 6 4
D. 12 6
第2题 中级 2.0分 单选
执行下面代码后,输出为( )。

int main() {
int a = 5;
int* p = &a;
int** q = &p;
**q += 7;
cout << a << " " << *p;
}

A. 5 5
B. 12 12
C. 12 5
D. 5 12
第3题 中级 2.0分 单选
已知int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int (*p)[4] = a; 则表达式*(*(p + 2) + 1) 的值为( )
A. 6
B. 10
C. 9
D. 11
第4题 中级 2.0分 单选
执行下面程序后,输出为( )。

void fun(int a, int &b, int *c) {
a += 1;
b += 2;
*c += 3;
}
int main() {
int x = 1, y = 1, z = 1;
fun(x, y, &z);
cout << x << " " << y << " " << z;
}

A. 2 3 4
B. 1 3 4
C. 2 1 4
D. 1 1 1
第5题 中级 2.0分 单选
执行下面程序后输出为( )。

int x = 3;
void f(int& x) {
x += 2;
}
int main() {
int x = 10;
f(x);
cout << x << " " << ::x;
}

A. 12 3
B. 10 5
C. 12 5
D. 10 3
第6题 中级 2.0分 单选
下列关于结构体初始化的写法,正确的是( )。

struct Point { int x, y; };

A. Point p = (1,2);
B. Point p = {1,2};
C. Point p = new Point(1,2);
D. Point p = <1,2>;
第7题 中级 2.0分 单选
执行下面代码后输出为( )。

struct S { int a; int b; };
void g(S s) { s.a += 10; }
void h(S& s) { s.b += 10; }
int main() {
S s{1, 2};
g(s);
h(s);
cout << s.a << " " << s.b;
}

A. 11 12
B. 1 12
C. 11 2
D. 1 2
第8题 中级 2.0分 单选
关于递推算法的描述,正确的是( )。
A. 递推表现为函数自己调用自己
B. 递推从已知初值出发,利用递推关系逐步推出后续结果
C. 递推只能用于指数复杂度问题
D. 递推一定需要回溯
第9题 中级 2.0分 单选
执行climb(6)的返回值为( )。

int climb(int n) {
if(n <= 2) return n;
int a = 1, b = 2, c = 0;
for(int i = 3; i <= n; i++) {
c = a + b;
a = b;
b = c;
}
return c;
}

A. 8
B. 13
C. 5
D. 10
第10题 中级 2.0分 单选

某排序算法对如下数据排序(按 score 升序),则下面关于该排序算法稳定性的描述中,说法正确的是( )。
初始: (90,'A'), (90,'B'), (80,'C'), (90,'D')
排序后: (80,'C'), (90,'A'), (90,'B'), (90,'D')

A. 不稳定,因为出现了相同分数
B. 稳定,因为相同score的相对顺序保持为A在B前、B在D前
C. 不稳定,因为C跑到前面了
D. 无法判断
第11题 中级 2.0分 单选
下面代码试图把数组按升序进行"插入排序",横线处应填写( )。

void ins(int a[], int n) {
for(int i = 1; i < n; i++) {
int key = a[i];
int j = i - 1;
while(j >= 0 && __________) {
a[j+1] = a[j];
j--;
}
a[j+1] = key;
}
}

A. a[j] < key
B. a[j] > key
C. a[j+1] > key
D. a[j] == key
第12题 中级 2.0分 单选
下列代码段的时间复杂度为( )。

int cnt = 0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if( (i+j) % 3 == 0) cnt++;
}
}

A. O(n)
B. O(n^2)
C. O(n^3)
D. O(log n)
第13题 中级 2.0分 单选
下面哪种方式不能实现将字符串Welcome to 2026!输出重定向到文件log.txt( )。
A. freopen方式
B. ofstream打开但使用cout
C. 重定向cout到文件
D. ofstream直接输出
第14题 中级 2.0分 单选
执行下面程序,输出结果是( )。

int divi(int a, int b) {
if(b == 0) throw 0;
return a / b;
}
int main() {
try {
cout << divi(10, 0);
} catch(const char* msg) {
cout << "A";
} catch(int) {
cout << "B";
}
}

A. A
B. B
C. 0
D. 程序终止
第15题 中级 2.0分 单选
以下哪种参数传递方式可以避免拷贝大型对象,同时能修改原对象?( )

下列函数实现排行榜中单个元素的位置调整(类似插入排序的相邻搬移)。当某玩家分数增加,需将其向前移动时, while 循环的条件应为( )。

A. i > 0 && cur.score > players[i-1].score
B. i > 0 && cur.score < players[i-1].score
C. i < n-1 && cur.score > players[i+1].score
D. i < n-1 && cur.score < players[i+1].score
第16题 中级 2.0分 判断
下面代码执行结束时,变量 a 的值变成 15。

T. 正确
F. 错误
第17题 中级 2.0分 判断
引用一旦绑定某个变量,就不能再绑定其他变量。( )
T. 正确
F. 错误
第18题 中级 2.0分 判断
执行下面代码,输出结果为 5 。

T. 正确
F. 错误
第19题 中级 2.0分 判断
下面程序可以正常编译并输出 10 。

T. 正确
F. 错误
第20题 中级 2.0分 判断
下面程序执行后输出 2010 。

T. 正确
F. 错误
第21题 中级 2.0分 判断

在 C++ 中,如果声明了一个指针变量但没有显式初始化,该指针会自动被初始化为 nullptr 。

T. 正确
F. 错误
第22题 中级 2.0分 判断
下面代码没有语法错误。

T. 正确
F. 错误
第23题 中级 2.0分 判断
下面程序能够把 Hello 写入 data.txt 文件中

T. 正确
F. 错误
第24题 中级 2.0分 判断
由于选择排序和插入排序的时间复杂度均为 ,在任何实际场景下两者的性能表现几乎相同,可以互相 替代。
T. 正确
F. 错误
第25题 中级 2.0分 判断
下面用递推方式计算斐波那契数列第 n 项的程序,时间复杂度是 。

T. 正确
F. 错误
第26题 中级 25.0分 编程
山之谷

时间限制:1.0 s 内存限制:512.0 MB
给定一个n行m列的矩阵,求其中所有元素的极差(最大值与最小值的差)。

【输入格式】
第一行,两个正整数n,m。
接下来n行,每行m个整数。
【输出格式】
一个整数,表示极差。
【样例输入】

3 4
1 2 3 4
5 6 7 8
9 10 11 12
【样例输出】

11
第27题 中级 25.0分 编程
礼盒排序

时间限制:1.0 s 内存限制:512.0 MB
给定n个礼盒,每个礼盒有价值和重量两个属性。按照价值从小到大排序,如果价值相同则按重量从小到大排序。

【输入格式】
第一行,一个正整数n。
接下来n行,每行两个正整数value,weight。
【输出格式】
n行,每行两个整数,表示排序后的礼盒信息。
【样例输入】

3
10 20
5 15
10 10
【样例输出】

5 15
10 10
10 20
💬