news 2026/10/27 7:35:38

2026年6月GESP真题及题解(C++四级): 选择题和判断题(题解)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2026年6月GESP真题及题解(C++四级): 选择题和判断题(题解)

2026年6月GESP真题及题解(C++四级): 选择题和判断题(题解)

选择题

第1题

题目:小杨正在编写一个“数字交换器”程序,他希望通过函数交换两个变量的值。请问运行以下代码后,屏幕上输出的是( )。

voidexchange(int*a,int&b){intt=*a;*a=b;b=t;}intmain(){intx=100,y=200;exchange(&x,y);cout<<x<<" "<<y;return0;}

A. 100 200
B. 200 100
C. 200 200
D. 编译错误

答案:B

解析:
a是指向x的指针,b是y的引用。
执行t = *a后,t = 100;执行*a = b后,x = 200;执行b = t后,y = 100。
因此输出200 100,选 B。


第2题

题目:下面程序想通过函数计算三门课总分,横线处应填入的是( )。

intsumScore(inta,intb,intc){returna+b+c;}intmain(){intchinese=88,math=95,english=90;inttotal=______;cout<<total;return0;}

A.sumScore
B.sumScore(chinese, math, english)
C.sumScore(int chinese, int math, int english)
D.sumScore(a, b, c)

答案:B

解析:
调用函数时应传入实参,且不能带类型声明。
正确调用形式为sumScore(chinese, math, english),返回三门课总分。
因此选 B。


第3题

题目:下面程序输出结果是( )。

intaddOne(intx){returnx+1;}intmain(){inta=6;cout<<addOne(a)+addOne(3);return0;}

A. 9
B. 10
C. 11
D. 12

答案:C

解析:
addOne(a)即addOne(6),返回7。
addOne(3)返回4。
7 + 4 = 11,因此输出11,选 C。


第4题

题目:关于下面程序,说法正确的是( )。

voidshow(){intstars=5;}intmain(){cout<<stars;return0;}

A. 程序输出 5
B. 程序可以通过编译,但输出随机值
C. 程序不能通过编译,因为stars只在show函数中有效
D. 程序不能通过编译,因为cout不能输出变量

答案:C

解析:
stars是show函数中的局部变量,作用域只在show函数内部。
在main函数中访问stars会因变量未定义而编译失败。
因此选 C。


第5题

题目:小杨在调试一个“等级提升”系统,代码逻辑如下,执行后*p的值是( )。

intlv=5,next_lv=6;int*p=&lv;*p=*p+1;p=&next_lv;

A. 5
B. 6
C.lv的地址
D.next_lv的地址

答案:B

解析:
起初p指向lv,执行*p = *p + 1后,lv变为6。
之后p = &next_lv,p改为指向next_lv。
此时*p就是next_lv的值,即6,选 B。


第6题

题目:小杨正在开发一款名为“星际网格”的游戏,他用二维数组int map[5][4];来表示地图。已知int占 4 字节,如果map的内存地址是0x2000,则表达式&map + 1的地址值是( )。

A.0x204c
B.0x205c
C.0x2050
D.0x2058

答案:C

解析:
&map的类型是int (*)[5][4],加 1 会跳过整个二维数组。
数组大小为5 × 4 × 4 = 80字节,即0x50。
所以地址为0x2000 + 0x50 = 0x2050,选 C。


第7题

题目:执行完下面代码后,变量val的值是( )。

intdata[]={10,20,30,40,50};int*ptr=data+2;intval=*(ptr-1)+*(ptr+1);

A. 50
B. 60
C. 70
D. 80

答案:B

解析:
ptr = data + 2,指向data[2],即30。
*(ptr - 1)是data[1],值为20。
*(ptr + 1)是data[3],值为40。
20 + 40 = 60,选 B。


第8题

题目:某班 3 个小组、每组 4 名同学的分数存入下面的二维数组score,则score[1][2]的值是( )。

intscore[3][4]={{80,81,82,83},{90,91,92,93},{70,71,72,73}};

A. 81
B. 90
C. 92
D. 72

答案:C

解析:
score[1]表示第二行:{90, 91, 92, 93}。
score[1][2]表示该行第 3 个元素,即92。
因此选 C。


第9题

题目:小杨定义了一个结构体Hero来表示游戏角色,下面哪种初始化方式会由于语法错误导致编译失败?( )

structHero{string name;inthp;};

A.Hero h = {"Arthur", 100};

B.

Hero h;h.name="Arthur";h.hp=100;

C.Hero h = new Hero{"Arthur", 100};

D.Hero *p = new Hero{"Arthur", 100};

答案:C

解析:
new Hero{"Arthur", 100}返回的是Hero*指针,不能直接赋值给Hero对象。
选项 C 类型不匹配,会导致编译失败。
选项 D 用Hero*接收是正确的。


第10题

题目:下面程序输出结果是( )。

structBook{string title;intpages;};intmain(){Book books[2]={{"Math",120},{"Science",150}};cout<<books[1].title;return0;}

A. Math
B. Science
C. 120
D. 150

答案:B

解析:
books[1]是第二个元素,其title为"Science"。
因此输出Science,选 B。


第11题

题目:小杨在对“能量晶石”按亮度进行排序。如果两块晶石亮度相同,他希望保持它们在原始序列中的相对顺序。下列关于排序算法稳定性的说法,错误的是( )。

A. 冒泡排序是稳定的,因为只有在左边比右边大时才交换。
B. 插入排序是稳定的,因为它将元素插入到相等元素的右侧。
C. 选择排序是稳定的,因为它每次选出最小元素放在前面。
D. 稳定性是指排序后相等元素的相对位置不发生改变。

答案:C

解析:
选择排序通常是不稳定的。
每轮将最小元素与当前位置交换时,可能把前面的相等元素换到后面,破坏相对顺序。
因此“选择排序是稳定的”这一说法错误,选 C。


第12题

题目:小杨的机器人正在能量踏板上跳跃,踏板编号为 1,2,3,跳到第n块踏板的方案数满足递推式f(n) = f(n - 1) + f(n - 2)。若f(1) = 1, f(2) = 2,则运行以下代码计算jump(5)的结果是( )。

intjump(intn){if(n<=2)returnn;inta=1,b=2,c=0;for(inti=3;i<=n;i++){c=a+b;a=b;b=c;}returnc;}

A. 5
B. 8
C. 13
D. 21

答案:B

解析:
f(1) = 1,f(2) = 2。
f(3) = 1 + 2 = 3。
f(4) = 2 + 3 = 5。
f(5) = 3 + 5 = 8。
因此jump(5)返回8,选 B。


第13题

题目:在“模拟实验室”程序中,为了防止除以 0 导致崩溃,小杨使用了异常处理机制。执行以下代码将输出( )。

try{intx=10,y=0;if(y==0)throw"Zero Error";cout<<x/y;}catch(inte){cout<<"Error Code:"<<e;}catch(constchar*msg){cout<<"Caught:"<<msg;}

A. 0
B. Error Code:0
C. Caught:Zero Error
D. 程序直接崩溃

答案:C

解析:
抛出的是字符串字面量"Zero Error",类型为const char*。
它会匹配第二个catch (const char *msg)。
因此输出Caught:Zero Error,选 C。


第14题

题目:下面代码使用某种排序算法,将数组中的元素按从小到大排序。这段代码使用的排序算法是( )。

voidmystery_sort(doublearr[],intn){for(inti=0;i<n-1;i++){intminPos=i;for(intj=i+1;j<n;j++){if(arr[j]<arr[minPos]){minPos=j;}}doubletemp=arr[i];arr[i]=arr[minPos];arr[minPos]=temp;}}

A. 冒泡排序
B. 插入排序
C. 选择排序
D. 非典型排序

答案:C

解析:
每轮从未排序区间中选择最小元素的下标minPos,然后与当前位置i交换。
这是典型的选择排序。
因此选 C。


第15题

题目:小杨正在读取“冒险日志”文件quest.txt。若文件内容为Level 10,执行以下程序后输出为( )。

ifstreamfin("quest.txt");string s;intv;fin>>s>>v;cout<<s.length()*v;

A. 50
B. 15
C. 70
D. 5

答案:A

解析:
fin >> s >> v;后,s = "Level",v = 10。
"Level"的长度为5。
5 * 10 = 50,因此输出50,选 A。


判断题

第1题

题目:运行以下程序后,变量a的值最终会变为20。

voidmodify(int*p){*p=*p+10;}intmain(){inta=10;modify(&a);return0;}

答案:√

解析:
modify(&a)将a的地址传入,函数中*p = *p + 10直接修改了a。
a由10变为20。
因此说法正确。


第2题

题目:在 C++ 中,引用一旦初始化并绑定到某个变量后,可以通过赋值语句将其重新绑定到另一个变量。

答案:×

解析:
引用必须在定义时初始化,并且一旦绑定后不能再重新绑定到其他变量。
对引用赋值实际上是修改它所绑定的那个变量的值,而不是改变引用本身。
因此说法错误。


第3题

题目:下面程序可以正确计算并输出 3 名学生的平均成绩。

structStudent{intid;intscore;};intmain(){Student students[3]={{1,90},{2,80},{3,100}};intsum=0;for(inti=0;i<3;i++){sum+=students[i].score;}doubleaverage=sum/3.0;cout<<average<<endl;return0;}

答案:√

解析:
程序正确累加了三名学生的score,总和为270。
sum / 3.0使用浮点除法,结果为90.0。
因此可以正确计算并输出平均成绩。


第4题

题目:选择排序算法在寻找每一轮最小值时,如果遇到相等的元素不进行交换,则选择排序是一种稳定的排序算法。

答案:×

解析:
选择排序通常不稳定。
即使寻找最小值时不交换相等元素,后面将最小值与当前位置交换时,仍可能跨过相等元素,破坏它们的相对顺序。
因此说法错误。


第5题

题目:如果使用带flag的冒泡排序,且待排序数组一开始就是有序的,那么算法只需一轮扫描即可结束,时间复杂度为O(n)。

答案:√

解析:
带flag的冒泡排序在一轮扫描中没有发生交换时,会提前结束。
若数组初始有序,只需扫描一轮,比较n - 1次,时间复杂度为O(n)。
因此说法正确。


第6题

题目:在 C++ 中定义二维数组并初始化时,可以省略第一维,但不能省略第二维。因此int a[][2] = {{1, 2}, {3, 4}};是合法的,而int a[][1] = {{1, 2}, {3, 4}};是不合法的。

答案:√

解析:
二维数组初始化时可以省略第一维,由初始化列表推导行数,但第二维必须明确给出。
int a[][2] = {{1, 2}, {3, 4}};合法。
int a[][1] = {{1, 2}, {3, 4}};中每行有 2 个元素,超过第二维长度 1,不合法。
因此说法正确。


第7题

题目:下面代码的时间复杂度是O ( 2 n ) O(2^n)O(2n)。

intcnt=0;for(inti=1;i<=n;i++){for(intj=1;j<=i;j++){cnt++;}}

答案:×

解析:
外层循环执行n次,内层循环分别执行1, 2, ..., n次。
总执行次数为n(n + 1) / 2,时间复杂度为O ( n 2 ) O(n^2)O(n2)。
不是O ( 2 n ) O(2^n)O(2n),因此说法错误。


第8题

题目:假设文件output.txt能正常打开,下面代码通过rdbuf将cout的输出重定向到了文件中。

ofstreamfout("output.txt");streambuf*old_buf=cout.rdbuf();cout.rdbuf(fout.rdbuf());cout<<"GESP Exam";cout.rdbuf(old_buf);

答案:√

解析:
cout.rdbuf(fout.rdbuf())将cout的缓冲区替换为fout的缓冲区。
此后cout << "GESP Exam";会写入output.txt。
最后恢复原来的缓冲区。
因此说法正确。


第9题

题目:小杨想通过下面程序给饭卡充值,程序会输出70。

voidrecharge(intmoney){money+=20;}intmain(){intcard=50;recharge(card);cout<<card;return0;}

答案:×

解析:
recharge的参数是值传递,函数内修改的是形参money的副本。
main中的card不会被修改,仍为50。
因此程序输出50,不是70,说法错误。


第10题

题目:下面代码可以通过编译。

inta[5];a++;

答案:×

解析:
数组名a在表达式中通常表示数组首元素地址,但它不是可修改的左值。
不能对数组名执行自增操作a++。
因此代码不能通过编译,说法错误。


各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

【秘籍汇总】(完整csp信奥赛C++学习资料):

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转

2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

https://edu.csdn.net/course/detail/41081 点击跳转

3、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转

4、csp信奥赛冲刺一等奖有效刷题题解:

信奥赛C++普及组CSP-J一等奖通关刷题题单及题解:
https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

信奥赛C++普及组csp-j初赛&复赛真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转

5、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 5:57:24

自研RAG系统架构蓝图:从开源底座到生产级落地实践

1. 为什么还要自研RAG&#xff1a;开源项目解不了的那道题1.1 开源RAG的两张面孔最近两年我几乎每周都会被同一个问题砸中——“团队想上RAG&#xff0c;是直接用开源框架&#xff0c;还是自己写一套&#xff1f;”这个问题之所以难回答&#xff0c;是因为问法本身就把RAG当成了…

作者头像 李华
网站建设 2026/10/23 4:21:48

FLUX 3图像生成与fal平台的推理范式升级

1. FLUX 3 Image 不是“又一个模型发布”&#xff0c;而是推理服务范式的迁移节点FLUX 3 Image 上线 fal 平台这件事&#xff0c;表面看只是“某个新模型上了某个云平台”&#xff0c;但如果你在 AI 基础设施层摸爬滚打超过三年&#xff0c;就会立刻意识到&#xff1a;这不是一…

作者头像 李华
网站建设 2026/10/18 22:51:12

ZEMAX偏振合束光纤耦合设计:攻克半导体激光器快慢轴失配

简介&#xff1a;本资源是一份面向光学工程、激光技术及光电系统设计领域高校师生与工程师的专业技术文档&#xff0c;聚焦半导体激光器高功率光纤耦合这一关键工程问题。针对多光束半导体激光器因快慢轴发散角严重不对称&#xff08;30–60 vs 8–12&#xff09;导致的耦合困难…

作者头像 李华
网站建设 2026/10/21 4:28:47

Spring Boot整合Shiro完整指南:权限管理从入门到实战

项目标题: Springboot整合Shiro 完整版Spring Boot 整合 Shiro&#xff0c;是 Java 后端做权限控制绕不开的一套经典组合。从内部管理系统到带角色区分的 SaaS 后台&#xff0c;到处都有它的身影。Shiro 这个名字看着陌生&#xff0c;但你只要理解“登录验证”“角色判断”“接…

作者头像 李华
网站建设 2026/10/19 8:30:34

博克超级排料实战:从DXF校验到省布率报表的完整路径

简介&#xff1a;「博克超级排料」是一款面向纺织、服装、包装、皮革等行业的专业排料优化工具&#xff0c;核心价值在于通过智能算法将不同尺寸与形状的裁片自动排布在最小面积材料上&#xff0c;从而减少边角料浪费、缩短生产周期、降低材料成本&#xff0c;适合从事裁剪设计…

作者头像 李华
网站建设 2026/10/18 16:32:10

Spring动态代理机制:JDK与CGLIB深度解析

1. Spring动态代理机制全景透视 Spring框架中的动态代理实现堪称Java企业级开发的基石技术&#xff0c;我在实际项目调优过程中发现&#xff0c;超过80%的AOP功能异常都源于对代理机制的理解偏差。动态代理在Spring中主要有两种实现方式&#xff1a;JDK动态代理和CGLIB字节码增…

作者头像 李华