万卷网> GESP认证 >C++ > 2025年9月CCF—GESP(C++四级)编程能力等级认证试卷

2025年9月CCF—GESP(C++四级)编程能力等级认证试卷
四级 2025 2026-07-14 09:41:40 95

一、单选题

1.

下面程序实现插入排序(升序排序),则横线上应分别填写( )

A.

arr[j] > key

arr[j + 1] = key

B.

arr[j] < key

arr[j + 1] = key

C.

arr[j] > key

arr[j] = key

D.

arr[j] < key

arr[j] = key

2.

下面这段代码会输出( )

A.

3 5

B.

编译失败:定义处少了默认参数

C.

运行错误

D.

链接失败:未定义引用

3.

小杨正在爬楼梯,需要n阶才能到达楼顶,每次可以爬1阶或2阶,求小杨有多少种不同的方法可以爬到楼顶,横线上应填写( )。

A.

prev2 = prev1;

prev1 = current;

current = prev1 + prev2;

B.

current = prev1 + prev2;

prev2 = prev1;

prev1 = current;

C.

current = prev1 + prev2;

prev1 = current;

prev2 = prev1;

D.

prev1 = current;

prev2 = prev1;

current = prev1 + prev2;

4.

下面这段代码会输出( )。

A.

5 5

B.

10 10

C.

5 10

D.

10 5

5.

关于排序算法的稳定性,以下说法错误的是( )

A.

稳定的排序算法不改变相等元素的相对位置

B.

冒泡排序是稳定的排序算法

C.

选择排序是稳定的排序算法

D.

插入排序是稳定的排序算法

6.

假设有一个班级的成绩单,存储在一个长度为 n 的数组 scores 中,每个元素是一个学生的分数。老师想要找出 所有满足 scores[i] + scores[j] + scores[k] == 300 的三元组,其中 i < j < k。下面代码实现该功能,请问其时间复杂度是( )。

A.

B.

C.

D.

7.

下面代码试图实现选择排序,使其能对数组 nums 排序为升序,则横线上应分别填写( )

A.

nums[j] < nums[minIndex]

swap(nums[i], nums[minIndex])

B.

nums[j] > nums[minIndex]

swap(nums[i], nums[minIndex])

C.

nums[j] <= nums[minIndex]

swap(nums[j], nums[minIndex])

D.

nums[j] <= nums[minIndex]

swap(nums[i], nums[j])

8.

关于插入排序的时间复杂度,下列说法正确的是( )。

A.

最好情况和最坏情况的时间复杂度都是

B.

最好情况是 ,最坏情况是

C.

最好情况是 ,最坏情况是

D.

最好情况是 ,最坏情况是

9.

给定如下定义的数组 arr ,则 *(*(arr + 1) + 2) 的值是( )。

A.

2

B.

5

C.

4

D.

6

10.

以下关于数组的描述中,( )是错误的

A.

数组名是一个指针常量

B.

随机访问数组的元素方便快捷

C.

数组可以像指针一样进行自增操作

D.

sizeof(arr) 返回的是整个数组 arr 占用的字节数

11.

下面程序运行的结果是( )

A.

6 7

B.

6 6

C.

5 6

D.

5 5

12.

运行如下代码会输出( )

A.

Mimi 2

B.

Mimi 3

C.

kitty 3

D.

kitty 2

13.

关于异常处理,以下说法错误的是( )

A.

try 块中的代码可能会抛出异常

B.

catch 块可以有多个,处理不同类型的异常

C.

throw 语句用于抛出异常

D.

所有异常都必须被捕获,否则程序会崩溃

14.

关于结构体初始化,以下哪个选项中正确的是( )

struct Point {int x,y;};

A.

Point p = (1,2);

B.

Point p = {1,2};

C.

Point p = new {1,2};

D.

Point p = <1,2>;

15.

运行下面程序后变量 a 的值是( )。

A.

42

B.

43

C.

编译错误

D.

不确定

二、判断题

1.

下面代码将二维数组 arr 传递给函数 f ,函数内部用 arr[i][j] 访问元素,函数参数声明为 int arr[] [4] 是错误的

A.正确 B.错误
2.

对整数数组 {4, 1, 3, 1, 5, 2} 进行冒泡排序(将最大元素放到最后),执行一轮之后是 {4, 1, 3, 1, 2, 5} 。

A.正确 B.错误
3.

以下C++代码合法

A.正确 B.错误
4.

执行下面C++代码将输出 11 。

A.正确 B.错误
5.

执行下面C++代码将输出 10

A.正确 B.错误
6.

以下代码能正确初始化指针

A.正确 B.错误
7.

虽然插入排序的时间复杂度为 ,但由于单元操作相对较少,因此在小数据量的排序任务中非常受欢迎。

A.正确 B.错误
8.

递推是在给定初始条件下,已知前一项(或前几项)求后一项的过程。

A.正确 B.错误
9.

以下代码将 Hello 写入文件 data.txt

A.正确 B.错误
10.

以下代码只能捕获 int 类型异常。

A.正确 B.错误

三、编程题

1.

最长连续段

2.

排兵布阵

公众号
客服 反馈
顶部