news 2026/10/15 11:04:32

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

作者头像

张小明

前端开发工程师

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

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

选择题

第1题

题目:

intf(intx=2){returnx*3;}intmain(){cout<<f()<<" < "<<f(4);}

A. 2 12
B. 6 12
C. 6 4
D. 12 6

答案:B

解析:
f()使用默认参数x = 2,返回2 * 3 = 6;f(4)返回4 * 3 = 12。输出为6 < 12,对应 B。


第2题

题目:

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

A. 5 5
B. 12 12
C. 12 5
D. 5 12

答案:B

解析:
q指向p,*q是p,**q就是a。**q += 7使a从 5 变为 12。*p也指向a,所以输出12 < 12。


第3题

题目:

inta[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

答案:B

解析:
p是指向含 4 个 int 的数组的指针。p + 2指向第 3 行,即{9, 10, 11, 12}。*(p + 2)是第 3 行首地址,+1后指向第 3 行第 2 个元素,即a[2][1] = 10。


第4题

题目:

voidfun(inta,int&b,int*c){a+=1;b+=2;*c+=3;}intmain(){intx=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

答案:B

解析:
a是值传递,修改不影响x;b是引用传递,y增加 2 变为 3;c是地址传递,z增加 3 变为 4。输出1 < 3 < 4。


第5题

题目:

intx=3;voidf(int&x){x+=2;}intmain(){intx=10;f(x);cout<<x<<" < "<<::x;}

A. 12 3
B. 10 5
C. 12 5
D. 10 3

答案:A

解析:
main中的局部变量x被引用传入f,增加 2 后变为 12。::x表示全局变量x,值为 3。输出12 < 3。


第6题

题目:下列关于结构体初始化的写法,正确的是:

A.

structPoint{intx,y;};Point p=(1,2);

B.

structPoint{intx,y;};Point p={1,2};

C.

structPoint{intx,y;};Point p=newPoint(1,2);

D.

structPoint{intx,y;};Point p=<1,2>;

答案:B

解析:
C++ 中结构体可用花括号初始化:Point p = {1, 2};。A 使用圆括号错误;C 类型不匹配;D 语法错误。


第7题

题目:

structS{inta;intb;};voidg(S s){s.a+=10;}voidh(S&s){s.b+=10;}intmain(){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

答案:B

解析:
g是值传递,不会修改原对象s.a;h是引用传递,会修改原对象s.b。所以s.a = 1,s.b = 12,输出1 12。


第8题

题目:关于递推算法的描述,正确的是:

A. 递推表现为函数自己调用自己
B. 递推从已知初值出发,利用递推关系逐步推出后续结果
C. 递推只能用于指数复杂度问题
D. 递推一定需要回溯

答案:B

解析:
递推是从初始条件出发,按照递推公式逐步计算后续项。函数自己调用自己是递归;递推不一定回溯,也不只用于指数复杂度问题。


第9题

题目:

intclimb(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;}

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

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

答案:B

解析:
计算过程:
i=3:c=3;i=4:c=5;i=5:c=8;i=6:c=13。返回 13。


第10题

题目:某排序算法对如下数据排序(按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. 无法判断

答案:B

解析:
稳定排序指相同关键字的元素排序后相对顺序不变。原序列中相同分数 90 的顺序为 A、B、D,排序后仍为 A、B、D,因此稳定。


第11题

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

voidins(inta[],intn){for(inti=1;i<n;i++){intkey=a[i];intj=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

答案:B

解析:
升序插入排序中,当已排序部分元素大于当前key时,需要向后移动。因此条件应为a[j] > key。


第12题

题目:

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

下列代码段的时间复杂度为:

A. O(n)
B. O(n log n)
C. O(n²)
D. O(2n)

答案:C

解析:
外层循环执行n次,内层循环也执行n次,总执行次数为n × n,时间复杂度为O(n²)。


第13题

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

A.

freopen("log.txt","w",stdout);cout<<"Welcome to 2026!"<<endl;fclose(stdout);

B.

std::ofstreamoutFile("log.txt");cout<<"Welcome to 2026!"<<endl;outFile.close();

C.

ofstreamlog_file("log.txt");streambuf*org_cout=cout.rdbuf();cout.rdbuf(log_file.rdbuf());cout<<"Welcome to 2026!"<<endl;cout.rdbuf(org_cout);

D.

std::ofstreamoutFile("log.txt");outFile<<"Welcome to 2026!"<<endl;outFile.close();

答案:B

解析:
B 中虽然创建了文件输出流outFile,但实际输出使用的是cout,仍然输出到屏幕,没有写入log.txt。其他选项均能实现写入或重定向。


第14题

题目:

intdivi(inta,intb){if(b==0)throw0;returna/b;}intmain(){try{cout<<divi(10,0);}catch(constchar*msg){cout<<"A";}catch(int){cout<<"B";}}

执行下面程序,输出结果是:

A. A
B. B
C. 程序崩溃
D. 无输出

答案:B

解析:
divi(10, 0)中b == 0,抛出int类型的异常0。异常被catch(int)捕获,因此输出B。


第15题

题目:

structPlayer{intscore;};voidup(Player players[],intn,intidx){Player cur=players[idx];inti=idx;while(______){players[i]=players[i-1];i--;}players[i]=cur;}

下列函数实现排行榜中单个元素的位置调整(类似插入排序的相邻搬移)。当某玩家分数增加,需将其向前移动时,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

答案:A

解析:
向前移动时,需要保证i > 0,并且当前玩家分数大于前一个玩家分数时,继续向前搬移。条件为i > 0 && cur.score > players[i - 1].score。A、B 选项内容重复,按题意选 A。


判断题

第1题

题目:

voidadd10(int&x){x+=10;}intmain(){inta=5;add10(a);}

下面代码执行结束时,变量a的值变成 15。

答案:√

解析:
add10的参数是引用,x += 10会直接修改实参a。a从 5 变为 15。


第2题

题目:引用一旦绑定某个变量,就不能再绑定其他变量。

答案:√

解析:
C++ 中引用必须在定义时绑定,并且一旦绑定后不能再改为绑定其他变量。


第3题

题目:

intmain(){inta[2][3];cout<<&a[1][2]-&a[0][1]<<endl;return0;}

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

答案:×

解析:
二维数组元素连续存放。a[0][1]是第 1 行第 2 个元素,a[1][2]是第 2 行第 3 个元素。它们之间相差 4 个int元素,所以输出为 4,不是 5。


第4题

题目:

intcalc(intx,inty=10);intcalc(intx){returnx*2;}intcalc(intx,inty){returnx*y;}intmain(){cout<<calc(5);}

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

答案:√

解析:
调用calc(5)时,会优先匹配单参数版本calc(int x),返回5 * 2 = 10。程序可以正常编译并输出 10。


第5题

题目:

intx=10;voidf(){intx=20;cout<<x;}intmain(){f();cout<<x;}

下面程序执行后输出 2010。

答案:√

解析:
f()中输出局部变量x = 20;main中输出全局变量x = 10。因此总输出为2010。


第6题

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

答案:×

解析:
只有全局指针或静态指针会自动初始化为nullptr。局部指针变量未初始化时,其值是不确定的,不会自动变为nullptr。


第7题

题目:

structGameCharacter{string name;intlevel;floatposition_x;floatposition_y;structEquipment{string weapon;intattack_bonus;intdefense_bonus;}equipment;structSkill{string name;intdamage;}skills[8];intskill_count;};

下面代码没有语法错误。

答案:√

解析:
C++ 允许在结构体内部定义嵌套结构体,并同时声明成员变量或数组成员。该代码结构合法,没有语法错误。


第8题

题目:

ofstreamfout("data.txt");cout<<"Hello";fout.close();

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

答案:×

解析:
cout << "Hello";是向标准输出(屏幕)输出,不是向文件输出。应使用fout << "Hello";才能写入data.txt。


第9题

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

答案:×

解析:
虽然两者最坏时间复杂度都为O(n²),但实际性能受数据初始有序程度、交换次数、比较次数、稳定性等影响,不能简单认为在任何场景下都可互相替代。


第10题

题目:

intfib(intn){if(n<=1)returnn;intf0=0,f1=1,cur=0;for(inti=2;i<=n;i++){cur=f0+f1;f0=f1;f1=cur;}returncur;}

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

答案:×

解析:
该程序使用循环从 2 到n逐步递推,时间复杂度为O(n),不是指数级O ( 2 n ) O(2^n)O(2n)。


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

#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/15 11:04:10

矩阵乘法本质:线性变换复合的几何直觉与实操指南

1. 为什么“矩阵乘法”总让人一头雾水线性代数这门课&#xff0c;很多人学完一学期&#xff0c;矩阵乘法算得飞快&#xff0c;但一问“矩阵乘法到底在干什么”&#xff0c;脑子里就只剩下一句“行乘列求和”。这不是你笨&#xff0c;而是大多数教材把顺序搞反了——先塞给你一堆…

作者头像 李华
网站建设 2026/10/15 11:04:01

SpringBoot汽车配件采购系统开发实践

1. 项目背景与核心价值 汽车配件采购信息系统是汽配行业数字化转型的关键基础设施。传统采购流程中普遍存在供应商管理混乱、价格比对困难、库存信息滞后等问题。我们基于SpringBoot框架开发的这套系统&#xff0c;正是为了解决这些行业痛点而生。 这个系统最核心的价值在于实…

作者头像 李华
网站建设 2026/10/15 11:03:49

Python入门指南:为什么它依然是编程初学者的首选语言

编程入门这件事&#xff0c;我一直有个观点&#xff1a;第一门语言的选择&#xff0c;真的会影响你对“写代码”这件事的初始感受。选对了&#xff0c;你会觉得编程是一点点搭积木&#xff0c;思路清晰、反馈直接&#xff1b;选错了&#xff0c;你会花大量时间跟编译器和运行时…

作者头像 李华
网站建设 2026/10/15 11:03:03

SpringBoot+Vue构建轻量级农业管理系统实战

1. 项目概述&#xff1a;乐享田园系统管理平台 去年帮朋友改造农场管理系统时&#xff0c;发现市面上的农业管理软件要么功能冗余要么扩展性差。于是基于SpringBootVue设计了一套轻量级解决方案&#xff0c;这套乐享田园系统经过三个种植季的实战检验&#xff0c;目前已经稳定支…

作者头像 李华
网站建设 2026/10/15 11:02:34

大数据环境JDK安装配置全指南:版本选型、多版本共存与集群一致性

1. 为什么大数据环境里JDK这一步最容易翻车很多人搭大数据环境&#xff0c;第一步装JDK&#xff0c;觉得这有什么难的&#xff0c;yum install java或者解压一个tar包&#xff0c;配个环境变量就完事了。但我见过太多集群跑不起来、NameNode起不来、Spark任务莫名其妙报Unsuppo…

作者头像 李华
网站建设 2026/10/15 11:01:35

Android开发入门:从环境搭建到第一个Hello World应用

1. 从零开始构建你的第一个Android应用 作为一名从2010年就开始接触Android开发的工程师&#xff0c;我至今还记得第一次在Android Studio上成功运行"Hello World"时的兴奋感。现在让我们用最接地气的方式&#xff0c;带你完整走一遍这个充满仪式感的过程。不同于官方…

作者头像 李华