string(1) "a" string(1) "b" string(10) "ViewIndex1" string(10) "ViewIndex2" string(10) "ViewIndex3" string(9) "ViewAuto1" string(9) "ViewAuto2" string(9) "ViewAuto3" string(9) "ViewAuto4" string(9) "ViewAuto5" string(9) "ViewAuto6" string(9) "ViewAuto7" string(9) "ViewAuto7" string(9) "ViewAuto8" string(9) "ViewAuto9" string(10) "ViewAuto10" string(10) "ViewAuto11" string(10) "ViewAuto10" string(10) "ViewAuto12" string(10) "ViewAuto13" GESP第13次认证真题解析|C++四级真题回顾-四季读书网

GESP第13次认证真题解析|C++四级真题回顾

四季读书网 2 0
GESP第13次认证真题解析|C++四级真题回顾

点击上方蓝字·关注我们

GESP第13次认证真题解析|C++四级真题回顾-第1张图片-四季读书网
GESP第13次认证真题解析|C++四级真题回顾-第2张图片-四季读书网
GESP第13次认证真题解析|C++四级真题回顾-第3张图片-四季读书网

CCF编程能力等级认证,英文名Grade Examination of Software Programming(以下简称GESP),由中国计算机学会发起并主办,是为计算机和编程学习者提供学业能力验证的平台。GESP旨在提升青少年计算机编程能力,培训机构编编程教育水平,推广和普及计算机和编程教育。

GESP考察语言为图形化(Scratch)编程、Python编程及C++编程,主要考察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程能力,为后期专业化编程学习打下良好基础。

本次为大家带来的是20263月C++四级认证真题解析。

C++ 四级

20263

一、单选题(共15题,每题2分,共30分)

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

答案

B

B

B

B

A

B

B

B

B

B

B

C

B

B

A

1执行下面程序后,输出为(  )

GESP第13次认证真题解析|C++四级真题回顾-第4张图片-四季读书网

A. 2 12 

B. 6 12 

C. 6 4 

D. 12 6

【答案B

【考察知识点】函数的默认参数

【解析】函数f的形参x设置了默认值2,当调用f()时没有传入实参,就会使用默认值2。计算:2 * 3 = 6

调用f(4)时传入了实参4,会覆盖默认值,x的值为4。计算:4 * 3 = 12

2执行下面代码后,输出为(  )

GESP第13次认证真题解析|C++四级真题回顾-第5张图片-四季读书网

A. 5 5 

B. 12 12 

C. 12 5 

D. 5 12

【答案】B

【考察知识点】指针与多级指针

【解析】**q的含义:

*q:对q解引用,得到p的值(也就是&a,即变量a的地址)

**q:再对*q解引用,得到的就是变量a本身

所以**q += 7 等价于a += 7

3已知:

GESP第13次认证真题解析|C++四级真题回顾-第6张图片-四季读书网

则表达式*(*(p+2)+1)的值为(   )

A. 6

B. 10 

C. 9

D. 11

【答案】B

【考察知识点】二维数组与指针运算

【解析】表达式为:*(*(p + 2) + 1)

1.分析p + 2

p是数组指针,类型为int (*)[4],它指向的是一个包含4int的数组。

指针运算中,p + n 表示跳过n个指向的数据类型。

所以p + 2 指向了二维数组a的第3行(即a[2]的地址)。

2.分析*(p + 2)

根据指针解引用规则,*(p + 2) 等价于p[2],代表第3行的数组名。

在表达式中,数组名会退化指向第0个元素的指针。即它指向了a[2][0]

3.分析*(p + 2) + 1

这是在第3行首地址的基础上偏移1个位置。

指向了 第 3行第1列 的元素,即地址 &a[2][1]

4.分析最外层*(...)

a[2][1]的地址进行解引用,得到具体的数值。

a[2][1]的值为10

4执行下面程序后,输出为(  )

GESP第13次认证真题解析|C++四级真题回顾-第7张图片-四季读书网

A. 2 3 4 

B. 1 3 4 

C. 2 1 4 

D. 1 1 1

【答案】B

【考察知识点】函数参数传递(值、引用、指针)

【解析】

a(值传递):修改副本,不影响实参xx保持为1

b(引用传递):直接操作 yy += 2 变为 3

*c(指针传递):通过地址操作 zz += 3 变为 4

5执行下面程序后输出为(  )

GESP第13次认证真题解析|C++四级真题回顾-第8张图片-四季读书网

A. 12 3 

B. 10 5 

C. 12 5 

D. 10 3

【答案A

【考察知识点】变量作用域与作用域解析符

【解析】

main函数内定义了局部变量int x = 10,它会屏蔽全局变量x

f(x)以引用方式传递局部变量x,函数内x += 2 会直接修改它,局部x变为12

::x是全局作用域解析符,访问的是全局变量x,其值始终为3

最终输出:12 3

6下列关于结构体初始化的写法,正确的是(  )

A.

GESP第13次认证真题解析|C++四级真题回顾-第9张图片-四季读书网

B.

GESP第13次认证真题解析|C++四级真题回顾-第10张图片-四季读书网

C.

GESP第13次认证真题解析|C++四级真题回顾-第11张图片-四季读书网

D.

GESP第13次认证真题解析|C++四级真题回顾-第12张图片-四季读书网

【答案】B

【考察知识点】结构体的定义与初始化

【解析】

A错误:结构体初始化不能用圆括号(1,2),这种写法不符合C++语法。

C错误new会返回堆上的指针,不能直接赋值给栈上的结构体变量Point p,类型不匹配。

D错误:尖括号<1,2>不是结构体初始化的合法语法。

7执行下面代码后输出为(  )

GESP第13次认证真题解析|C++四级真题回顾-第13张图片-四季读书网

A. 11 12 

B. 1 12 

C. 11 2 

D. 1 2

【答案】B

【考察知识点】结构体参数传递

【解析】

g(s)是值传递,函数内修改的是结构体s的副本,不影响原变量,s.a保持为1

h(s)是引用传递,函数内直接修改原变量,s.b += 10 后变为2 + 10 = 12

最终输出:1 12

8关于递推算法的描述,正确的是(  )

A.递推表现为函数自己调用自己

B.递推从已知初值出发,利用递推关系逐步推出后续结果

C.递推只能用于指数复杂度问题

D.递推一定需要回溯

【答案】B

【考察知识点】递推算法

【解析】

A错误:函数自己调用自己是递归的特征,不是递推。

B正确:递推的核心就是从已知初值出发,利用递推关系逐步推出后续结果(比如斐波那契数列)。

C错误:递推可以把很多指数复杂度问题优化成线性复杂度,不是 “只能用于指数复杂度问题”。 

D错误:递推是从前往后迭代计算,不需要回溯;回溯是递归/搜索算法的特征。

9执行climb (6) 的返回值为(  )

GESP第13次认证真题解析|C++四级真题回顾-第14张图片-四季读书网

A. 8

B. 13 

C. 5

D. 10

【答案】B

【考察知识点】递推与斐波那契数列

【解析】循环从前两项逐步往后加,算出第6项就是答案。

10某排序算法对如下数据排序(按score升序),则下面关于该排序算法稳定性的描述中,说法正确的是(  )

初始:(90,'A'), (90,'B'), (80,'C'), (90,'D')

排序后:(80,'C'), (90,'A'), (90,'B'), (90,'D')

A.不稳定,因为出现了相同分数

B.稳定,因为相同score的相对顺序保持为AB前、BD

C.不稳定,因为C跑到前面了

D.无法判断

【答案B

【考察知识点】排序算法的稳定性

【解析】稳定排序的定义:排序后,关键字相同的元素,相对顺序和排序前保持不变。

11下面代码试图把数组按升序进行 “插入排序”,横线处应填写( )

GESP第13次认证真题解析|C++四级真题回顾-第15张图片-四季读书网

A. a[j] < key 

B. a[j] > key 

C. a[j+1] > key 

D. a[j] == key

【答案B

【考察知识点】插入排序算法

【解析】插入排序升序时,while循环需要不断把比key大的元素往后挪,给key腾位置。

循环条件要判断:j >= 0 a[j] > key 时,执行a[j+1] = a[j](后移)。

横线处应填:a[j] > key

12下列代码段的时间复杂度为(  )

GESP第13次认证真题解析|C++四级真题回顾-第16张图片-四季读书网

A. O(n) 

B. O(n log n) 

C. O(n²) 

D. O(2ⁿ)

【答案】C

【考察知识点】算法时间复杂度分析

【解析】代码是两层嵌套循环,总执行次数约为n * n,时间复杂度O(n²)

13下面哪种方式不能实现将字符串Welcome to 2026! 输出重定向到文件log.txt(  )

GESP第13次认证真题解析|C++四级真题回顾-第17张图片-四季读书网

A.

GESP第13次认证真题解析|C++四级真题回顾-第18张图片-四季读书网

B.

GESP第13次认证真题解析|C++四级真题回顾-第19张图片-四季读书网

C.

GESP第13次认证真题解析|C++四级真题回顾-第20张图片-四季读书网

D.

GESP第13次认证真题解析|C++四级真题回顾-第21张图片-四季读书网

【答案B

【考察知识点】文件操作与输出重定向

【解析】B选项 只创建了文件流对象outFile,但后续cout的输出仍然打印到控制台,没有写入文件,无法实现重定向。

14执行下面程序,输出结果是(  )

GESP第13次认证真题解析|C++四级真题回顾-第22张图片-四季读书网

A. A

B. B

C.程序崩溃

D.无输出

【答案】B

【考察知识点】C++异常处理

【解析】异常抛出:调用divi(10,0)时,b=0触发throw 0,抛出的是int类型的异常

异常匹配

catch(const char* msg)只能捕获字符串类型异常,不匹配,跳过。

catch(int)专门捕获int类型异常,匹配成功,执行cout << "B";

最终输出为B

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

GESP第13次认证真题解析|C++四级真题回顾-第23张图片-四季读书网

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

【答案】A

【考察知识点】数组元素移动与排序

【解析】边界限制i > 0 防止数组下标越界。

前移条件:分数要向前移动,必须当前玩家分数高于前一位玩家,即 cur.score > players[i-1].score

综上,条件为:i > 0 && cur.score > players[i-1].score

二、判断题(共10题,每题2分,共20分)

题号

1

2

3

4

5

6

7

8

9

10

答案

×

×

×

×

×

×

1下面代码执行结束时,变量a的值变成15
GESP第13次认证真题解析|C++四级真题回顾-第24张图片-四季读书网

【答案】√

【考察知识点】引用传递

【解析】add10函数的参数是引用传递(int &x),函数内对x的修改会直接作用于原变量a。初始a=5,调用add10(a)后,a += 10,结果为15

2引用一旦绑定某个变量,就不能再绑定其他变量。()

【答案】√

【考察知识点】引用的基本特性

【解析】引用初始化后不可重新绑定,为C++标准规则。

3执行下面代码,输出结果为5

GESP第13次认证真题解析|C++四级真题回顾-第25张图片-四季读书网

【答案】×

【考察知识点】二维数组指针运算

【解析】二维数组按行优先存储,从&a[0][1]&a[1][2],地址相差4int元素,指针相减结果为4

4下面程序可以正常编译并输出10

GESP第13次认证真题解析|C++四级真题回顾-第26张图片-四季读书网

【答案】×

【考察知识点】函数重载与默认参数冲突

【解析】calc(5)调用存在歧义:既可以匹配int calc(int x),也可以匹配int calc(int x, int y=10)。编译器无法确定调用哪个版本

5下面程序执行后输出2010

GESP第13次认证真题解析|C++四级真题回顾-第27张图片-四季读书网

【答案】√

【考察知识点】全局变量与局部变量

【解析】f()函数内的局部变量x=20会屏蔽全局变量,执行cout << x 输出20

main函数中访问的是全局变量x=10,执行cout << x 输出10

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

【答案】×

【考察知识点】指针的初始化

【解析】在C++中,未显式初始化的局部指针变量,其值是不确定的随机垃圾值,不会自动初始化为nullptr

7下面代码没有语法错误。

GESP第13次认证真题解析|C++四级真题回顾-第28张图片-四季读书网

【答案】√

【考察知识点】C++基础语法

【解析】代码语法合法,可正常编译。

8下面程序能够把Hello写入data.txt文件中。

GESP第13次认证真题解析|C++四级真题回顾-第29张图片-四季读书网

【答案】×

【考察知识点】文件写入操作

【解析】cout << "Hello"; 会把内容输出到控制台(屏幕),而不是写入文件

9由于选择排序和插入排序的时间复杂度均为O (n²),在任何实际场景下两者的性能表现几乎相同,可以互相替代。(

答案】×

【考察知识点】排序算法性能对比

【解析】插入排序在数据接近有序时,时间复杂度可以接近O (n),实际效率很高。

选择排序无论数据初始状态如何,都需要固定的n (n-1)/2 次比较,性能不会因数据有序而提升

10下面用递推方式计算斐波那契数列第n项的程序,时间复杂度是O (2ⁿ)

GESP第13次认证真题解析|C++四级真题回顾-第30张图片-四季读书网

【答案】×

【考察知识点】递推算法复杂度

【解析】这是递推版的斐波那契实现,不是递归,时间复杂度为O(n)

三、编程题(每题25分,共50分)

编程题1

  • 试题名称:山之谷

  • 时间限制1.0 s

  • 内存限制512.0 MB

题目描述

现有一片山地,可以视为一个NM列的网格图,第ij列的海拔为hi,j如果一个单元格的海拔不高于其所有相邻单元格(相邻包括上、下、左、右、左上、右上、左下、右下,最多8个方向)的海拔,则称该单元格为山谷。请你数一数该片山地中有多少山谷。

输入格式

第一行包含2个整数N, M,表示山地的大小。之后N行,每行包含M个整数hi,1, hi, 2,…… hi,M,表示海拔。

输出格式

输出1行,包含1个整数C,表示山谷的数量。

样例

输入样例

GESP第13次认证真题解析|C++四级真题回顾-第31张图片-四季读书网

输出样例

GESP第13次认证真题解析|C++四级真题回顾-第32张图片-四季读书网样例解释

样例1如图所⽰,绿⾊单元格代表⼭⾕:

GESP第13次认证真题解析|C++四级真题回顾-第33张图片-四季读书网

数据范围

保证1N, M 100 1hi,j105

【考察知识点】二维数组、枚举

【解析】

核心题意:统计网格中8邻域内海拔最低的山谷数量。

解题思路

遍历每个单元格,检查8 个相邻位置;

若当前单元格海拔≤所有相邻海拔,即为山谷;

给网格外围赋值极大值,避免边界越界判断。

算法:双重循环枚举+ 8 方向检查

参考程序

GESP第13次认证真题解析|C++四级真题回顾-第34张图片-四季读书网

编程题2

  • 试题名称:礼盒排序

  • 时间限制1.0 s

  • 内存限制512.0 MB

题目描述

商店推出了许多礼盒,每个礼盒中包含k件商品,每件商品都有⼀个价格。

现在需要对这些礼盒进⾏排序,排序规则如下:

1.先按礼盒总价格从⼩到⼤排序;

2.如果总价格相同,按礼盒中最贵商品的价格从⼩到⼤排序;

3.如果仍然相同,按礼盒中最便宜商品的价格从⼩到⼤排序;

4.如果仍然相同,按礼盒编号从⼩到⼤排序。

请输出排序后的礼盒编号。

输入格式

第⼀⾏包含两个整数nk,分别表⽰礼盒数量和每个礼盒中商品的数量。

接下来n⾏,每⾏包含k个整数,第i⾏表⽰第i个礼盒中各商品的价格。

输出格式

输出⼀⾏,包含排序后的礼盒编号(编号从1开始),⽤空格分隔。

样例

输入样例

GESP第13次认证真题解析|C++四级真题回顾-第35张图片-四季读书网输出样例

GESP第13次认证真题解析|C++四级真题回顾-第36张图片-四季读书网样例解释

4个礼盒分别为:

GESP第13次认证真题解析|C++四级真题回顾-第37张图片-四季读书网

排序过程:

1.按总价排序,3号礼盒总价最⼩;

2.其余总价均为10,再按最⼤值排序,4号最⼤值更⼩;

3. 1号和2号最⼤值相同,再按最⼩值排序,2号更⼩。

最终顺序为:3 4 2 1

数据范围

保证1n103110,商品价格104

【考察知识点】结构体排序

【解析】

核心题意:按总价→最高价→最低价→编号的优先级排序礼盒,输出编号。

解题思路

用结构体存储每个礼盒的总价、最大 / 最小价格、编号;

自定义排序规则,严格按题目 4 个条件依次比较;

排序后直接输出礼盒编号。

参考程序

策划:GESP技术委员会副主席 刘晓庆

技术支持:朱浩淼

【关于GESP第14次认证】

GESP第13次认证真题解析|C++四级真题回顾-第38张图片-四季读书网

认证语言:

C++/Python/图形化编程

GESP第13次认证真题解析|C++四级真题回顾-第39张图片-四季读书网

报名及交费时间:

2026年4月15日17:00-6月16日24:00

GESP第13次认证真题解析|C++四级真题回顾-第40张图片-四季读书网

准考证下载及打印时间:

2026年6月23日9:30-6月27日9:30

GESP第13次认证真题解析|C++四级真题回顾-第41张图片-四季读书网

认证时间:

1-4级 2026年6月27日  上午09:30-11:30

5-8级 2026年6月27日  下午13:30-16:30

GESP第13次认证真题解析|C++四级真题回顾-第42张图片-四季读书网

认证方式:

全国各GESP考点内上机考试

GESP第13次认证真题解析|C++四级真题回顾-第43张图片-四季读书网

报名方式:

登录GESP网站(https://gesp.ccf.org.cn/)进行报名或“CCF GESP”微信公众号报名。

GESP第13次认证真题解析|C++四级真题回顾-第44张图片-四季读书网

认证安排及收费标准:

认证时间

认证级别

认证语言

认证费用

上午9:30-11:30

一级

C++/Python/图形化

300元/人

上午9:30-11:30

二级

C++/Python/图形化

320元/人

上午9:30-11:30

三级

C++/Python/图形化

340元/人

上午9:30-11:30

四级

C++/Python/图形化

360元/人

下午13:30-16:30

五级

C++/Python

380元/人

下午13:30-16:30

六级

C++/Python

400元/人

下午13:30-16:30

七级

C++/Python

420元/人

下午13:30-16:30

八级

C++/Python

440元/人

GESP第13次认证真题解析|C++四级真题回顾-第45张图片-四季读书网

报名流程

📍第一种方式:GESP网站报名流程

步骤1:在电脑上使用Google Chrome浏览器/Microsoft Edge浏览器/Firefox浏览器进入GESP网站 (https://gesp.ccf.org.cn) ,参加过GESP认证的考生可直接点击【登录】;未参加过GESP的考生需先点击【注册】完成新用户注册→点击【登录】。

步骤2:进入认证列表,在对应的认证名称后点击【立即报名】。

步骤3:按顺序填写考生的报名信息,身份证信息、语言等级都填写完整后,选择考点,所选城市/区没有考点信息显示,则说明该地区暂无考点,请勾选其他城市/区。考点剩余机位数大于0,则可以报名该考点。填写完成后,点击【提交报名】。

步骤4:在报名信息确认界面,仔细核对报名信息后,点击【确认报名】。

注:如需修改考生信息,请点击【修改报名】。

步骤5:进入交费界面,选择支付方式(支付宝/微信)后,点击【确认】,然后扫码支付报名费用。

注:部分省市的考位数量变化较快,如交费页面提示该考点已报满,请点击【我的报名】后点击【取消报名】,重新填写报名信息后再提交。

步骤6:完成支付,认证报名成功。

步骤7:等待审核,已交费考生信息会依次审核。

步骤8:在指定时间内下载、打印准考证。

步骤9:参加认证。

📍第二种方式:GESP公众号报名流程

点击“CCF GESP”公众号底部菜单栏【GESP】→【报名认证】,同意授权,进行登录。登录后,其余报名步骤可参考“第一种方式”指引完成报名。

GESP第13次认证真题解析|C++四级真题回顾-第46张图片-四季读书网
GESP第13次认证真题解析|C++四级真题回顾-第47张图片-四季读书网

【联系我们】

1. GESP微信:关注“CCF GESP”公众号,点击“GESP小助手”即可交流。

2. GESP邮箱:gesp@ccf.org.cn

注:请在邮件中详细描述咨询的问题并留下考生的联系方式及姓名、身份证件号,以便及时有效处理。

3. GESP电话:0512-67656856

咨询时间:周一至周五(法定节假日除外): 上午 8:30-12:00;下午 13:00-17:30

扫描下方二维码关注GESP公众号,了解更多资讯

GESP第13次认证真题解析|C++四级真题回顾-第48张图片-四季读书网
GESP第13次认证真题解析|C++四级真题回顾-第49张图片-四季读书网

抱歉,评论功能暂时关闭!

string(10) "ViewAuto14"