【202609】C++四级
从PDF导入:GESP 2026年09月_C++4级试卷
C++
120分钟
总分 100.0
27 题
试卷题目预览
第1题
中级
2.0分
单选
小杨使用指针修改计数器的值。执行下面程序后,输出结果是( )。

第2题
中级
2.0分
单选
关于下面指针声明的说法,正确的是( )。

第3题
中级
2.0分
单选
小杨用二维数组记录仓库货物数量。执行下面代码后,变量 x 的值是( )。

第4题
中级
2.0分
单选
下面函数用于将一个 3 行 5 列二维数组的第 r 行元素全部加 1,横线处正确的形参写法是( )。

第5题
中级
2.0分
单选
执行下面程序后,输出结果是( )。

第6题
中级
2.0分
单选
执行下面程序后,输出结果是( )。

第7题
中级
2.0分
单选
小杨定义了结构体数组,并使用指针访问其中的元素。执行下面代码后输出的是( )。

第8题
中级
2.0分
单选
关于冒泡排序、插入排序和选择排序,下列说法正确的是( )。
第9题
中级
2.0分
单选
某机器人每次可以向前移动 1 格或 2 格。到达第 n 格的方法数由下面函数计算。ways(6) 的返回值是( )。

第10题
中级
2.0分
单选
对一组 struct student 的学生按成绩(score)升序排序。排序前后的数据如下。关于该排序的稳定性,判断正确的是( )。

排序前:(90, 'A'),(80, 'B'),(90, 'C'),(80, 'D')
排序后:(80, 'B'),(80, 'D'),(90, 'C'),(90, 'A')
第11题
中级
2.0分
单选
下面代码使用插入排序将数组按升序排列。横线处应填写( )。

第12题
中级
2.0分
单选
下面代码的时间复杂度是( )。

第13题
中级
2.0分
单选
假设文件 data.txt 的内容如下: <img src="/static/uploads/images/7b46389eadf2.png" style="max-width:35%;border-radius:6px;margin:8px 0;" /> 执行下面程序后,输出结果是( )。 <img src="/static/uploads/images/0f9288908915.png" style="max-width:35%;border-radius:6px;margin:8px 0;" />
Blue Sky
执行下面程序后,输出结果是( )。
第14题
中级
2.0分
单选
执行下面程序后,输出结果是( )。

第15题
中级
2.0分
单选
下面函数使用冒泡排序将数组按升序排列。为了在数组已经有序时提前结束,两处横线应分别填写( )。

第16题
中级
2.0分
判断
执行下面程序后,变量 a 的值为 15。

第17题
中级
2.0分
判断
一个函数必须在调用之前既声明又定义。
第18题
中级
2.0分
判断
下面二维数组在内存中按行优先连续存储,因此 ((a + 1) + 0) 的值为 5。

第19题
中级
2.0分
判断
执行下面程序后会输出 20 。

第20题
中级
2.0分
判断
下面结构体初始化语句是合法的。

第21题
中级
2.0分
判断
对于按升序实现的稳定插入排序,移动元素的条件通常应为 a[j] >= key,这样能够保证相等元素的相对顺序不变。

第22题
中级
2.0分
判断
下面递推程序计算 n!。当 n = 4 时,返回值为 24 。

第23题
中级
2.0分
判断
下面两层循环的时间复杂度是 O(n²) 。

第24题
中级
2.0分
判断
假设文件能够正常打开,下面程序会把 Welcome 写入 log.txt 。

第25题
中级
2.0分
判断
执行下面程序时,catch (int e) 能够捕获由 throw "Error" 抛出的异常,因此程序输出 Caught 。

第26题
中级
25.0分
编程
新汉诺塔
试题名称:新汉诺塔
时间限制:1.0 s
内存限制:512.0 MB
汉诺塔问题是最经典的递推问题之一:
有三个可以放圆盘柱子,编号为 A、B 和 C。
开始时柱子 A 上套着 n 个圆盘,它们从上到下按照从小到大的顺序排列。
我们的任务是要把这 n 个圆盘移到柱子 C 上,并保持他们的原有顺序不变。
在移动圆盘的过程中,需要遵守以下规则:
1.圆盘只能从一根柱子顶部拿出,从另一根柱子顶部放入。
2.每次只能移动一个圆盘。
3.小圆盘必须时刻位于大圆盘之上。
小杨在学习了汉诺塔问题后,决定添加一个新规则:
4.每一次移动,圆盘只能从 A 移动到 B,从 B 移动到 C,或者从 C 移动到 A;其它移动是不允许的。
在新规则下,给定圆盘数量 n,试问最少移动步数是多少?
【输入格式】
输入一个正整数 n,表示圆盘的数量。
【输出格式】
输出一个整数,表示在新规则下将 n 个圆盘从 A 移动到 C 所需的最少移动步数。
【输入样例 1】 2 【输出样例 1】 7 【样例解释 1】 以下步骤是最优的(编号为 1 的是小盘,为 2 的是大盘): 将 1 从 A 移动到 B; 将 1 从 B 移动到 C; 将 2 从 A 移动到 B; 将 1 从 C 移动到 A; 将 2 从 B 移动到 C; 将 1 从 A 移动到 B; 将 1 从 B 移动到 C。 可以证明没有更少步骤可以完成这个任务。 【输入样例 2】 3 【输出样例 2】 21 【数据范围】 对于所有数据,n ≤ 20。
第27题
中级
25.0分
编程
有序网格
试题名称:有序网格
时间限制:1.0 s
内存限制:512.0 MB
小 A 有一个 n 行 m 列格子组成的二维网格,从上到下依次是第 1 行到第 n 行,从左到右依次是第 1 列到第 m 列。每个格子里有一个数字,第 i 行第 j 列的格子的数字是 a_{i,j}。
小 A 想让二维网格变得有序,因此他先对每一行从左到右按升序排序,再对每一列从上到下按升序排序。以下是一个先完成行排序再完成列排序的例子:
小 A 想知道二维网格经过以上排序后的结果。你能编写程序帮助他吗?
【输入格式】
第一行,两个正整数 n, m,分别二维网格的行数与列数。
接下来 n 行,每行 m 个整数 a_{i,1}, …, a_{i,m},表示二维网格种的数字。【输出格式】
输出 n 行,每行 m 个整数,表示二维网格先完成行排序再完成列排序后的结果。
【输入样例 1】
3 2
6 5
4 3
2 1
【输出样例 1】
1 2
3 4
5 6
【输入样例 2】
3 4
1 3 2 5
6 2 4 4
5 4 1 3
【输出样例 2】
1 2 3 5
1 3 4 5
2 4 4 6
【数据范围】
对于所有测试点,保证 2 ≤ n ≤ 10,2 ≤ m ≤ 10,1 ≤ a_{i,j} ≤ 100。