GESP认证C++编程真题解析 | 202506 二级

news/2026/1/17 21:29:32/文章来源:https://www.cnblogs.com/guolianggsta/p/19497210

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


单选题

第1题

2025年4⽉19⽇在北京举⾏了⼀场颇为瞩⽬的⼈形机器⼈半程马拉松赛。⽐赛期间,跑动着的机器⼈会利用⾝上安装的多个传感器所反馈的数据来调整姿态、保持平衡等,那么这类传感器类似于计算机的( )。

A.处理器

B.存储器

C.输入设备

D.输出设备

【答案】:C

【解析】

传感器的功能是采集数据,属于输入设备。

第2题

小明购置的计算机使⽤⼀年后觉得内存不够⽤了,想购置⼀个容量更⼤的内存条,这时他需要的内存条是( )。

A.RAM

B.ROM

C.CACHE

D.EPROM

【答案】:A

【解析】

内存属于RAM,ROM、CACHE、EPROM分别为只读存储器、高速缓冲存储器、可擦变成只读存储器。

第3题

下⾯C++代码执行后的输出是( )。

int a = 3;
float b = 3.5;
cout << (a *= b);

A.3

B.3.5

C.10

D.11

【答案】:C

【解析】

两者在赋值语句相互运算时会转化为小数类型,得到结果后又被放回int类型的整数a,所以最后选择答案为整数10。

第4题

下⾯C++代码用于获得正整数的第3位数,如1234则输出2。如果是⼀位数或两位数,则输出0。横线处应填入的代码是( )。

int N, remainder;
cout << "请输入正整数:";
cin >> N;
cout << ______;

A.N % 1000 / 100

B.N / 1000 % 100

C.N / 1000 / 100

D.N % 100 / 100

【答案】:A

【解析】

若想要获得右数第三个数位上的数字,需先将第三位提到首位,再将首位取出。N%1000可以将数字截取至只剩后三位,再整除100即可。

第5题

下⾯C++代码执行,其输出是( )。

int a, b = (6, 28);
b == a;
a = b;
cout << a << ' ' << b;

A.6 28

B.6 6

C.28 6

D.28 28

【答案】:D

【解析】

== 为条件判断符号,而不是赋值符号,所以 b 的值没有变化,而 a 进行了赋值语句,所以会变为 b 的值28。

第6题

今天星期六,其后第N天星期几?如果是星期⼀到星期六输出形如:星期1、星期2等,星期天则输出星期天。下⾯的C++代码用于完成上述要求,横线处应填上的代码是( )。

int N, remainder;
cin >> N;
remainder = ______;
if (remainder == 0)printf("星期六后第%d天是星期天\n", N);
elseprintf("星期六后第%d天是星期%d\n", N, remainder);

A.(N + 6) / 7

B.(N + 6) // 7

C.N % 7

D.(N + 6) % 7

【答案】:D

【解析】

通过取余将数据控制在某一范围之内,当前天是周六,所以 6+N 天后的星期数再把整周的除去,最后剩下的余数就是今天的日期

第7题

下⾯的C++代码执行后其输出是( )。

int i, Sum = 0;
for (i=1; i<10; i++) {Sum += i;if (i % 2) continue;if (i % 7) break;
}
cout << Sum;

A.45

B.28

C.3

D.0

【答案】:C

【解析】

通该题考察程序的取余运算,如果循环变量i取余2不为0,则跳过当次循环、若取余7不为0,则直接退出整个循环。计算得sum值为3。

第8题

下⾯C++代码执行后其输出是( )。

int i, j;
for (i=1; i<12; i++)for (j=1; j<i; j++)if (i * j % 2 == 1)break;
cout << i * j;

A.110

B.22

C.12

D.3

【答案】:C

【解析】

通考察循环的运行逻辑,当满足 break 条件终止时,只退出距离它最近的一层循环,所以实际最终的i到取值为12时才停止,最终答案为12*1。

第9题

下⾯C++代码执⾏后输出是( )。

int i, cnt = 0;
for (i=-99; i<100; i+=2)cnt = 1 + cnt;
cout << cnt;

A.101

B.100

C.99

D.98

【答案】:B

【解析】

本题考察修改过初值、判断语句、更新语句之后的for循环,每次i增长2,最终结果为100。

第10题

下⾯C++代码执⾏后输出是( )。

int i;
for (i=1; i<10; i++)if (i % 3 != 0) {printf("A#");continue;}elsebreak;printf("0#");
}
if (i == 10) cout << "1";

A.A#A#

B.A#0#A#0

C.A#A#1

D.A#0#A#0#1

【答案】:A

【解析】

通本题考察对循环变量增长的理解,当第一次i是3的倍数时 for 循环会break退出,所以只输出两个A#。

第11题

下⾯C++代码执⾏后的输出是( )。

int i, j;
for (i=0; i<3; i++)for (j=0; j<i; j++)printf("%d#%d-", i, j);
printf("END");

A.0#0-1#0-2#0-2#1-END

B.0#0-1#0-1#1-2#0-2#1-2#2-3#0-3#1-3#2-END

C.0#0-1#0-1#1-2#0-2#1-2#2-END

D.1#0-2#0-2#1-END

【答案】:D

【解析】

本题考察双重循环的变量理解,与之前题目不同的是该题加入了对 printf 使用的考察,printf可以通过在引号中加入字符完成对字符和变量的混合输出,所以答案中含有#和-,模拟后得到答案为D。

第12题

下⾯C++代码执行后,将输出不能被3整除且除以5余数为2的数。下列选项不能实现的是( )。

int i, j;
for (i=0; i<100; i++)if (______)cout << i << endl;

A.(i % 3 != 0) && (i % 5 == 2)

B.(i % 3) && (i % 5 == 2)

C.(i % 3) && !(i % 5 != 2)

D.!(i % 3) && (i % 5 == 2)

【答案】:D

【解析】

逻辑运算符中可以通过取反等操作相互转化,本题中不符合题意的是D,!(i%3)指的是i%3的值是false,也就是i可以整除3。

第13题

下⾯C++代码⽤于判断⼀个⼤于0的正整数是⼏位数,横线处应填⼊代码先后是( )。

int N, cnt;
cout << "请输入大于0的正整数:";
cin >> N;cnt = 0;
while (_____) {cnt += 1;______;
}cout << cnt;

A.

N > 1
N = N / 10

B.

N > 1
N /= 10

C.

N == 0
N /= 10

D.

N > 0
N /= 10

【答案】:D

【解析】

本题考察对数位拆分的熟练程度,如学习过循环拆位,本题难度较低,否则对考生的思维要求较高。每次/10相当于去掉最后一位,所以答案选择D。

第14题

判断⼀个数是否为自守数。自守数的定义是如果⼀个数的平方其尾数与该数相同,则为自守数,如25的平方是625,其尾数是25,所以25是自守数。相关说法错误的是( )。

int N, N1, M1;
cout << "输入一个正整数: ";
cin >> N;
N1 = N, M1 = N * N;bool Flag = true;while (N1 > 0) {if (N1 % 10 != M1 % 10) {Flag = false;break;}else {N1 = N1 / 10, M1 = M1 / 10;}
}if (Flag == true)printf("%d的平方是%d,是自守数", N, N * N);
elseprintf("%d的平方是%d,不是自守数", N, N * N);

A.如果Flag在循环中不被改为false,则说明该数是自守数

B.代码 if (N1 % 10 != M1 % 10) 用于判断其个位数是否相等,如果不等,则表明不是自守数

C.代码N1 = N1 / 10, M1 = M1 / 10将个位数去掉

D.将N1 > 0 改为 N > 0效果相同

【答案】:D

【解析】

考察 while 循环和模拟题型,D选项N没有变化过,所以不能直接用N做判断。

第15题

下⾯C++代码实现输出如下图形,相关说法的是( )。

请输入层数:10
0
12
345
6789
01234
567890
1234567
89012345
678901234
5678901234
int line_number, now_number;
int i, row;cout << "请输入行数:";
cin >> line_number;
now_number = 0;for (row=1; row<line_number+1; row++) {  // L1for (i=0; i<row; i++) {  // L2cout << now_number;now_number += 1;if (now_number == 10) now_number = 0;  // L3}cout << endl;
}

A.代码 now_number = 0 移动到 L1 和 L2 标记的两⾏代码之间,效果维持不变

B.代码 now_number += 1 修改为 now_number = 1 + now_number 效果维持不变

C.将代码 now_number == 10 调整为 now_number > 9 效果维持不变

D.将最后⼀⾏的 cout << endl 修改为 cout << "\n" ,效果维持不变

【答案】:A

【解析】

考察考生对循环嵌套的理解,将变量移动上去之后,在过程当中无法对变量清零,导致输出的变量有误。

判断题

第16题

人们现在参加很多闭卷考试时通常都不允许带智能手机、平板电脑等,此外很多种智能手表同样因为具有嵌入操作系统及通信等功能,所以也不允许随身携带。( )

A.正确

B.错误

【答案】:A

【解析】

考场明确要求

第17题

在C++代码中,假设N为正整数,则 N / 10 舍弃个位数。如果 N ⼩于10,则其值为0,⼤于10则是舍弃个位 数的数。( )

A.正确

B.错误

【答案】:A

【解析】

除以10即舍去个位。

第18题

下列C++代码执行后,其输出为 10 20, 即 a==bb==a对 a 和 b 的值没有任何影响。( )

int a = 10, b = 20;
a == b;
b == a;
cout << (a, b);

A.正确

B.错误

【答案】:B

【解析】

部分正确,值没有任何影响,但输出因为逗号表达式的返回值,为20。

第19题

a 和 b 分别是C++的整型变量,如果表达式 max(a, b) == min(a, b) 的值为真,则说明 a 和 b 相等。( )

A.正确

B.错误

【答案】:A

【解析】

最大最小值相等,则a,b相等。

第20题

下⾯C++代码编译时将报错,因为字符变量 a 被赋值了浮点值。 ( )

char a = '1';
a = 45.6
cout << a;

A.正确

B.错误

【答案】:B

【解析】

被赋浮点值不会导致编译错误。

第21题

下⾯C++代码执⾏时如输⼊59.99,将输出两个汉字。( )

int score;
cout << "请输入学生成绩: ";
cin >> score;
if (score < 60)cout << "不及格";
elsecout << "及格";

A.正确

B.错误

【答案】:B

【解析】

59.99赋给int类型的变量,值为59。

第22题

在下⾯的C++代码中,因为 continue 将被执⾏,因此不会有输出。( )

int i;
for (i=1; i<10; i++)if (i % 2 == 0)continue;
if (i == 10)cout << "END";

A.正确

B.错误

【答案】:B

【解析】

continue执行,不影响最后输出,不会打断循环。

第23题

下⾯的C++代码执⾏后将输出15。( )

int Sum = 0;
for (int i=0; i<5; i++)Sum += i;
cout << Sum;

A.正确

B.错误

【答案】:B

【解析】

i 变量会变为0,1,2,3,4,最终结果为10。

第24题

将下⾯C++代码中的 (int i = 5; i > 1; i--) 调整为 (int i = 1; i < 5; i++) 输出结果相同,因为 5 到 1 与 1 到 5 的求和相同。( )

int tnt;
tnt = 0;
for (int i=5; i>1; i++)tnt += i;
cout << tnt;
cout << endl;

A.正确

B.错误

【答案】:B

【解析】

两者的起终点不一样,结果不同。

第25题

为实现如下效果,即N⾏N列字符。当输⼊是奇数时,中间列为 *,其他是 -;当输⼊是偶数时,则中间两 列是 *,其他是 -。字符阵列后的代码能实现其效果。( )

/*
5
__*__
__*__
__*__
__*__
__*__
*/
int N;
cin >> N;int i, j;
for (i=0; i<N; i++) {for (j=0; j<N; j++)if ((j == N / 2) || (j == (N-1) / 2))cout << "*";elsecout << "-";cout << endl;
}

A.正确

B.错误

【答案】:A

【解析】

代码通过if语句控制输出的规则,可以输出对应矩阵。

编程题

B4356 数三角形

【题目来源】

洛谷:B4356 [GESP202506 二级] 数三角形 - 洛谷

【题目描述】

直角三角形有两条直角边与一条斜边,设两条直角边的长度分别为 \(a,b\),则直角三角形的面积为 \(\frac{ab}{2}\)

请你计算当直角边长 \(a,b\) 均取不超过 \(n\) 的正整数时,有多少个不同的面积为整数的直角三角形。直角边长分别为 \(a,b\)\(a',b'\) 的两个直角三角形相同,当且仅当 \(a=a', b=b'\) 或者 \(a=b', b=a'\)

【输入】

一行,一个整数 \(n\),表示直角边长的最大值。

【输出】

输出一行,一个整数,表示不同的直角三角形数量。

【输入样例】

3

【输出样例】

3

【算法标签】

《洛谷 B4356 数三角形》 #循环结构# #GESP# #2025#

【代码详解】

#include <bits/stdc++.h>
using namespace std;int main()
{int n;      // 输入的上限值int cnt = 0; // 计数器,统计满足条件的数对个数cin >> n;   // 输入正整数n// 外层循环:遍历所有可能的a值(1到n)for (int a = 1; a <= n; a++){// 内层循环:遍历所有可能的b值(a到n)for (int b = a; b <= n; b++){// 检查a和b的乘积是否为偶数if (a * b % 2 == 0)cnt++;  // 满足条件则计数器加1}}// 输出满足条件的数对总数cout << cnt << endl;return 0;
}

【运行结果】

3
3

B4357 幂和数

【题目来源】

洛谷:B4357 [GESP202506 二级] 幂和数 - 洛谷

【题目描述】

对于正整数 \(n\),如果 \(n\) 可以表为两个 \(2\) 的次幂之和,即 \(n=2^x+2^y\)\(x,y\) 均为非负整数),那么称 \(n\) 为幂和数。

给定正整数 \(l,r\),请你求出满足 $l≤n≤r $ 的整数 \(n\) 中有多少个幂和数。

【输入】

一行,两个正整数 \(l,r\),含义如上。

【输出】

输出一行,一个整数,表示 \(l,r\) 之间幂和数的数量。

【输入样例】

2 8

【输出样例】

6

【算法标签】

《洛谷 B4357 幂和数》 #进制# #循环结构# #GESP# #2025#

【代码详解】

#include <bits/stdc++.h>
using namespace std;int l, r;    // 输入的范围区间 [l, r]
int cnt = 0; // 计数器,统计满足条件的数字个数// 检查数字的二进制表示是否恰好有1个1(即是否为2的幂次)
bool check(int x)
{int res = 0;  // 记录二进制中1的个数// 遍历数字的每一位while (x){// 检查最低位是否为1if (x & 1 == 1)res++;// 右移一位,检查下一位x >>= 1;}// 如果二进制中只有1个1,返回truereturn res == 1;
}int main()
{cin >> l >> r;  // 输入范围 [l, r]// 遍历区间内的每一个数字for (int i = l; i <= r; i++){// 尝试所有可能的2的幂次作为除数for (int x = 0; ; x++){// 如果2^x超过当前数字i,终止循环if (pow(2, x) > i)break;// 计算i除以2^x的整数部分int k = i / pow(2, x);// 检查是否能整除(即i是否是2^x的整数倍)if (k * pow(2, x) != i)break;// 检查k-1是否是2的幂次if (check(k - 1))cnt++;  // 满足条件则计数器加1}}// 输出满足条件的数字总数cout << cnt << endl;return 0;
}

【运行结果】

2 8
6

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1174806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SSM的服装销售系统-计算机毕业设计源码+无LW文档

基于SSM的服装销售系统论文 摘要&#xff1a;本文围绕基于SSM&#xff08;Spring、SpringMVC、MyBatis&#xff09;框架的服装销售系统展开研究。阐述了系统的研究背景与意义&#xff0c;深入分析系统需求&#xff0c;详细介绍功能设计。该系统旨在解决传统服装销售管理模式的问…

嘎嘎降AI vs 比话降AI:2026年降AI工具对比测评 - 还在做实验的师兄

嘎嘎降AI主打性价比(4.8元/千字,达标率99.26%),比话降AI主打知网专精(8元/千字,可降至0%)。追求省钱选嘎嘎,追求极致效果选比话。两款都很靠谱,按需选择即可。嘎嘎降AI vs 比话降AI:2026年降AI工具对比测评T…

大数据领域必备:ClickHouse 全方位解析

大数据领域必备&#xff1a;ClickHouse 全方位解析 一、引言 (Introduction) 钩子 (The Hook) “昨天凌晨3点&#xff0c;我被运维的电话叫醒——数据 dashboard 又崩了。” 这是我做大数据工程师时最难忘的经历。当时我们用Hive处理用户行为数据&#xff0c;每次业务方要查“过…

新能源汽车充电服务系统-计算机毕业设计源码+LW文档

一、 研究的背景、目的和意义 &#xff08;一&#xff09;课题研究的背景 随着新能源汽车市场的快速发展&#xff0c;充电服务成为关键环节。全球能源结构的转型是当前新能源汽车充电服务系统设计的重要背景之一。传统化石能源的消耗带来了严重的环境污染和温室气体排放&…

SCI论文降AI率工具推荐:Turnitin检测轻松过 - 还在做实验的师兄

SCI论文投稿前需要通过Turnitin AI检测,中文降AI工具对英文无效。推荐AIGCleaner(专业英文降AI,Turnitin检测83%→0%)。国内论文可用嘎嘎降AI配合。SCI论文降AI率工具推荐:Turnitin检测轻松过TL;DR:SCI论文投稿前…

JUC并发编程:LockSupport.park() 与 unpark() 深度解析

一、前言在Java并发编程中&#xff0c;AQS (AbstractQueuedSynchronizer) 是实现锁&#xff08;如 ReentrantLock&#xff09;、同步器&#xff08;如 CountDownLatch&#xff09;的核心基础。而 AQS 能够实现线程的阻塞与唤醒&#xff0c;其底层完全依赖于 LockSupport 工具类…

AIGC检测原理解析:为什么自己写的论文也会被判AI生成 - 还在做实验的师兄

AIGC检测系统识别的是「AI特征」而非「是否由AI生成」。规范的学术写作特征与AI特征高度重合,所以自己写的论文也可能被误判。解决方法是用嘎嘎降AI等专业工具处理,让文本「看起来更像人写的」。AIGC检测原理解析:为…

高校志愿服务管理系统-计算机毕业设计源码+无LW文档

摘要&#xff1a;本文旨在探讨高校志愿服务管理系统的开发与实施。通过分析当前高校志愿服务管理的现状和存在的问题&#xff0c;提出了开发一个综合性的志愿服务管理系统的需求。本文详细阐述了系统的需求分析、功能设计以及预期的社会和经济影响&#xff0c;旨在提高高校志愿…

论文AI率从90%降到5%,我用了这个方法 - 还在做实验的师兄

AI率90%是极高的情况,但专业工具可以处理。我用嘎嘎降AI把90%的AI率降到了5%以下,花了不到50块钱,全程20分钟。手动改根本不可能,直接用工具是唯一出路。论文AI率从90%降到5%,我用了这个方法TL;DR:AI率90%是极高…

2026年便宜好用的降AI工具推荐,学生党必看 - 还在做实验的师兄

学生党预算有限,推荐嘎嘎降AI(4.8元/千字,1000字免费试用)和率零(3.2元/千字,最便宜)。效果要求高选嘎嘎,纯省钱选率零。都有免费额度,先试再买。2026年便宜好用的降AI工具推荐,学生党必看TL;DR:学生党预算…

2026年降AI工具年度盘点:哪款最值得用 - 还在做实验的师兄

2026年降AI工具年度盘点:性价比之王是嘎嘎降AI(4.8元/千字,达标率99.26%),效果极致是比话降AI(8元/千字,可降至0%),最便宜是率零(3.2元/千字)。按需选择即可。2026年降AI工具年度盘点:哪款最值得用TL;DR:…

完整教程:Fresha 的实时分析进化:从 Postgres 和 Snowflake 走向 StarRocks

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

论文AI率从100%降到10%以下,我用的这几款工具 - 还在做实验的师兄

论文AI率太高别慌,用对工具完全能救回来。实测了十几款降AI工具,最终推荐嘎嘎降AI(99.5%→3.1%,性价比高)和比话降AI(可降至0%,知网专精)。手动改反而可能越改越高,别踩坑。论文AI率从100%降到10%以下,我用的…

强烈安利8个一键生成论文工具,专科生毕业论文轻松搞定!

强烈安利8个一键生成论文工具&#xff0c;专科生毕业论文轻松搞定&#xff01; AI 工具如何改变论文写作的未来 在当前的学术环境中&#xff0c;越来越多的专科生开始借助 AI 工具来提升论文写作的效率。尤其是那些对写作技巧不够熟悉、时间紧迫的学生&#xff0c;AI 工具的出现…

知网AIGC检测率太高?这5款降AI工具亲测有效 - 还在做实验的师兄

知网AIGC检测系统2025年12月升级后,检测逻辑从文本重合度转向语义连贯性分析,传统同义词替换彻底失效。亲测5款降AI工具后,推荐嘎嘎降AI(达标率99.26%,价格实惠)和比话降AI(专攻知网,不达标退款)。知网AIGC检…

研究生论文降AI率,导师推荐的3款工具 - 还在做实验的师兄

研究生论文AI率太高会影响评审和答辩。导师推荐嘎嘎降AI(达标率99.26%,4.8元/千字)、比话降AI(知网专精,8元/千字)处理。硬改效果差,专业工具更靠谱。研究生论文降AI率,导师推荐的3款工具TL;DR:研究生论文AI率…

深度测评继续教育AI论文写作软件TOP8:开题报告文献综述全攻略

深度测评继续教育AI论文写作软件TOP8&#xff1a;开题报告文献综述全攻略 2026年继续教育AI论文写作工具测评&#xff1a;精准匹配学术需求 随着人工智能技术的不断进步&#xff0c;AI论文写作工具在继续教育领域中的应用日益广泛。然而&#xff0c;面对市场上种类繁多的工具&a…

13.3 大规模仿真与数据驱动技能学习:以NVIDIA Isaac Gym为平台的高通量训练范式

13.3 大规模仿真与数据驱动技能学习:以NVIDIA Isaac Gym为平台的高通量训练范式 13.3.1 引言:数据驱动时代的技能获取瓶颈 在具身智能与物理AI的框架下,机器人需要通过大量与环境的交互来获取和优化技能,尤其是基于强化学习等数据驱动的方法。然而,直接在物理实体上进行…

多线程与并发-知识总结2

一、ThreadLocal1、什么是ThreadLocal&#xff1f;ThreadLocal是JDK包提供的&#xff0c;它提供了线程本地变量&#xff0c;如果你创建了一个ThreadLocal变量&#xff0c;那么访问这个变量的每个线程都会有这个变量的一个本地副本。当多个线程操作这个变量时&#xff0c;实际操…