news 2026/6/10 9:56:59

GESP认证C++编程真题解析 | 202603 一级

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP认证C++编程真题解析 | 202603 一级

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

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

适合人群:

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

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


单选题

第1题

2026年春节联欢晚会上一个武术表演节目《武 BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备( )。

A. 检测重心的重力传感器

B. 预装的AI算法程序

C. 接收动作指令的遥控器

D. 拍摄其他机器人的摄像头

【答案】:B

【解析】

预装的AI算法程序属于软件系统,不属于硬件中的"输入设备"。传感器、遥控器和摄像头均用于采集外部信息并输入到系统中,属于输入设备。

第2题

小明学习编程有一段时间了,他想在图形环境下把当前目录(或文件夹)下的文本文件20260314.txt的名字改一下。他用鼠标左键点击选中该文件后,立即完成下面哪个操作后将处于输入新文件名的状态( ):

A. 单击右键并选择弹出菜单中的“重命名”

B. 双击左键

C. 按功能键F1

D. 按回车键

【答案】:A

【解析】

在常见的图形操作系统中,选中文件后单击右键并选择"重命名"可以更改文件名。

第3题

下面C++代码可以执行,有关说法正确的是( )。

doublePI=3.141596;cout<<(PI);

A. 为了方便初学者,cout << (PI)cout << (pi)效果相同,即变量的大小写不敏感

B.cout << (PI)修改为cout << (Pi)能正常执行

C. 不能用PI做变量名,因为要保存圆周率这个常量

D. 将程序中全部PI都改写为Pai,将能正常执行,不会报错

【答案】:D

【解析】

C++对大小写是严格敏感的,因此A和B错误。PI只是一个普通的标识符,可以作为变量名使用,C错误。只要变量声明和调用的名字保持一致,改为 Pai 是完全合法的。

第4题

C++表达式3 * 3 % 2的值为( )。

A. 81

B. 27

C. 4

D. 1

【答案】:D

【解析】

乘法 * 和取余 % 优先级相同,从左到右结合。先计算3 ∗ 3 3*333得到 9,再计算 9%2 得到 1。

第5题

整型变量ab的初值都是 4,则下面的C++代码执行后的输出是( )。

a,b=3,4;cout<<(a+2)<<(b-2)<<endl;cout<<a<<b<<endl;

A.

61 43

B.

52 34

C.

62 44

D.

62 32

【答案】:A

【解析】

整型变量a、b的初值都是4,C++中逗号的优先级低,所以"a, b=3, 4"应该理解为一个逗号表达式,三个子表达式分别为"a"b=3"4",也就是说b变为3,a依然为4,第2行输出(4+2)和(3-2),即6和1。

第6题

下面C++代码的相关说法,正确的是( )。

intN=0;cin>>N;cout<<(N);

A. 执行时如输入10,则将输出10

B. 执行时如输入3.14,将报错

C. 执行时如输入ABC,将报错

D. 执行时如输入-10,将报错

【答案】:A

【解析】

N是整型,输入整数10会正常读取并输出10。如果输入浮点数或字符,C++的标准输入流只会截断或停止读取,并不会直接"报错"导致程序崩溃。

第7题

下面C++代码执行时,其说法正确的是( )。

intM=0,N=0;cin>>M;cin>>N;if(N>M)cout<<(N-M);elsecout<<(M-N);

A. 如果输入一个正数和一个负数,其输出结果肯定是大于 0

B. 不管是负整数、正整数亦或0,其结果肯定是大于等于 0

C. 如果NM是相等的整数,将不会有输出

D. 如果NM输入带有小数点的数,将按整数部分计算

【答案】:B

【解析】

这段代码的作用是求出M和N之差的绝对值(即大数减去小数)。因此,无论输入什么整数,结果一定大于或等于0。

第8题

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

inti,tnt=1;for(i=0;i<5;i++)tnt*=i;printf("%2d%2d\n",tnt,i);

A.

24 5

B.

10 5

C.

0 4

D.

0 5

【答案】:D

【解析】

循环从 i=0 开始,tnt 第一次乘积累积就是 1 * 0 = 0。之后无论 i 是多少,tnt 始终为 0。循环结束时 i 为 5,因此输出为 0 5。

第9题

执行下面C++代码段求序列-1+2+3-4+5+6-7+8+9-10+11+12......之值。例如输入4,则计算序列前 4 项的值,规律如序列所示,输出为0。下面说法中正确的是( )。

intN,tnt,i;cout<<"请输入正整数:";cin>>N;tnt=0;for(i=1;i<N+1;i++)// L1if(i%3==1)// L2tnt+=-i;elsetnt+=i;cout<<tnt;

A. L1行中i < N + 1应该修为i < N才会符合预期

B. L2行中i % 3 == 1应修改为i % 3 == 0才会符合预期

C. L2行中i % 3 == 1修改为i % 3与当前程序效果相同

D. 当前代码能实现题目所描述计算目标

【答案】:D

【解析】

序列的规律是:遇到模3余1的位置(1,4,7…)变为负数。代码中 i = 1,2,…N,模3余1时执行 tnt+=-i; 能实现所描述的特定目标。

第10题

下面C++代码的相关说法,正确的是( )。

inti;for(i=1;i<10;i++){if(i%2==0){continue;// L1}elsecout<<i<<"#";}cout<<i<<"END";

A. 上述代码执行后,其输出是1#3#5#7#9#9END

B. 删除else后的执行效果与当前代码相同

C. 删除else且将cout << i << "#"移入L1行下面,则执行效果与当前代码相同

D. 在cout << i << "END"前增加判断if(i > 10),其执行效果与当前代码相同

【答案】:B

【解析】

A错误。for 循环结束的条件是 i<10 为假,这意味着跳出循环时 i 的值必定是10,而不是9。所以最后输出的应该是 10END。
B正确。如果 if 条件成立触发了 continue,那么后面的 cout 语句无论有没有被 else 包裹,都会被直接跳过。只有当if条件不成立(没有触发continue)时,程序才会按顺序向下执行到 cout。
C错误。如果把输出语句移入 if 分支内部,代码会变成当 i 是偶数时输出并 continue。这样输出的内容就完全反过来了,变成了输出偶数。
D错误。前面分析过,循环结束后 i 的值等于 10。如果加上 if (i > 10) 这个判断条件,那么最后的 10END 就不会被打印出来了,执行效果发生了改变。

第11题

一个正整数的每位都是个位数,称为数位,最高位非0。下面的C++代码用于求正整数的所有数位之和,简称数位和。如 123 的各数位分别是1、2、3,则其数位和为 1+2+3 ,结果为6。为实现该目标,横线处应该填写的 代码是( )。

intN;cin>>N;inttnt=0;while(N!=0){____________;____________;}cout<<"N的数位和为:"<<tnt;

A.

tnt+=N/10N/=10

B.

tnt+=N%10N/=10

C.

tnt+=N/10N%=10

D.

tnt=tnt+N%10N%=10

【答案】:B

【解析】

求数位和的常用逻辑是每次取出个位累加到 tnt 中(tnt+=N%10),然后去掉个位(N/=10)。

第12题

小明想要快速知道任给一个正整数中有多少个奇数位(数位值是奇数),下面的C++代码是其实现,横线处应该填入的代码是( )。

intN;cin>>N;intodd_count=0;// 记录奇数的个数intold_number=N;// 保存原数while(N!=0){if(_________________)odd_count+=1;N=(N-N%10)/10;}cout<<old_number<<"中共有 "<<odd_count<<" 个奇数";

A.N % 10 % 2 == 0

B.N % 10 % 2 == 1

C.N / 10 / 2 == 1

D.N / 2 / 10 == 0

【答案】:B

【解析】

判断个位是否为奇数,应提取个位数(N%10)并判断其除以 2 的余数是否为 1。因此填入 N % 10 % 2 == 1。

第13题

小明和弟弟在玩一个拼数字游戏,游戏规则是:二人各写一个两位正整数MN;然后将较大的数字放在较小的前面,拼成一个4位数;将这个4位数除以3的余数添加到4位数的后面,得到一个5位数;最后判断这个5位数能否被14整除。下面的C++代码用于判断MN是否符合全部要求,如果符合则输出Y否则输出N。例如输入8579,可以拼出85792,恰好是14的倍数,则输出Y。关于下面代码描述正确的是( )。

intM,N,Q;cin>>M>>N;if(M>N)// L1Q=M*100+N;elseQ=N*100+M;if((Q*10+Q%3)%14==0)cout<<"Y";elsecout<<"N";

A. 代码段不能完成正确判断

B. L1行代码中条件应该改为M <= N

C. L2行代码应该改为if ((Q*10+Q/3) % 14 == 0)

D. 代码段可以不使用变量Q,而是在区分MN大小后分别直接用它们来判断

【答案】:B

【解析】

不借助变量Q,直接在比较 M 和 N 大小时将相应的 M * 100 + N 或 N * 100 + M 代入 Q 的位置判断即可。

第14题

执行下面C++代码可以判断一个6位正整数N的高3位和低3位的差是否是314的倍数。例如628314就符合要求。横线处应该填入( )。

cin>>N;if(___________________________)cout<<N<<"符合条件"<<endl;

A.((N % 1000) - (N / 1000)) / 314 == 0

B.((N / 1000) - (N % 1000)) % 314 == 0

C.((N % 1000) - (N / 1000)) / 314

D.((N / 1000) - (N % 1000)) % 314

【答案】:B

【解析】

高 3 位是 N/1000,低 3 位是 N%1000。两者的差为 (N/1000)-(N%1000),判断其是否为 314 的倍数,使用模运算 % 314 == 0 即可。

第15题

N是一个正整数。如果N的所有奇数位的数位和等于所有偶数位的数位和,则称它是一个“双螺旋数”。例如12375的所有奇数位的数位和是9,同时它的所有偶数位的数位和也是9,则12375就是一个双螺旋数。下面的C++代码用于判断输入的N是否为双螺旋数。空白处应该填入的代码是( )。

inti,N,N1=0,N2=0,N0;cin>>N;N0=N;while(N){_________________________ _________________________}if(N1==N2)cout<<N0<<"是双螺旋数"<<endl;

A.

N1+=N%10,N/=10;N2+=N%10,N/=10;

B.

N1+=N/10,N/=10;N2+=N/10,N/=10;

C.

N1+=N%10,N%=10;N2+=N%10,N%=10;

D.

N1+=N/10,N%=10;N2+=N/10,N%=10;

【答案】:A

【解析】

要在一次循环中交替处理奇数位和偶数位,可取两次个位:第一次将个位加给 N1 并 N 除以10,紧接着将新的个位加给 N2 并 N 除以 10。对应的操作为 N1 += N % 10; N /= 10; N2 += N % 10; N /= 10;。

判断题

第1题

小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息,那么可以推测这块手表中装有一款特定操作系统。

A. 正确

B. 错误

【答案】:A

【解析】

现代智能电话手表包含硬件调度及通讯功能,需要专属的嵌入式操作系统。

第2题

C++表达式4 % 22 * 2 % 2的结果相同。

A. 正确

B. 错误

【答案】:A

【解析】

4 % 2 = 0,2 * 2 % 2 也是 4 % 2 = 0。两者结果完全相同。

第3题

下面C++代码段成功执行后将输出0

for(i=1;i<10;i++)if(i%3==0)break;cout<<i;

A. 正确

B. 错误

【答案】:B

【解析】

当 i = 3 时触发 break 跳出循环,循环外部的 cout<< i 会输出 3。

第4题

下面能够正常执行的C++代码段用于求1到N之和,N为正整数。因为i < N + 1,所以是1到N且包含N之和。

tnt=0;cout<<"请输入正整数:";cin>>N;total=0;for(i=1;i<N+1;i++);total+=i;cout<<total;

A. 正确

B. 错误

【答案】:B

【解析】

for循环末尾有一个分号,导致它变成了一个空循环。随后执行 total += i; 时,只是将最后退出循环时的 i 加上,无法求 1~N 的和。

第5题

执行下面的C++代码段,其语句cout << (N)将被执行0次或无数次(即死循环)。

cin>>N;while(N)cout<<(N);

A. 正确

B. 错误

【答案】:A

【解析】

如果在 while(N) 循环内部不对变量 N 进行任何修改,当初始 N 为 0 时执行 0 次;非 0 时陷入死循环。

第6题

下面的C++代码段的变量都是整型,它能用于判断输入的正整数是否为对称数。所谓对称数是指从左到右和从右到左读该数,其值相同。例如,121414都是对称数,而123不是对称数。( )

cout<<"请输入正整数:";cin>>n;old_number=n;new_number=0;while(n!=0){new_number=new_number*10+n%10;n/=10;}if(old_number==new_number)cout<<"对称数";elsecout<<"非对称数";

A. 正确

B. 错误

【答案】:A

【解析】

该代码求出了 n 的逆序数 new_number,与 old_number 对比,若相等则 n 是对称数。

第7题

执行下面的C++代码段,如果变量都为整型变量,输入为大于0的整数,则输出数值一定为-N的值。

cin>>N;total=0;for(i=-N;i<N;i+=2)total+=i;cout<<total;

A. 正确

B. 错误

【答案】:A

【解析】

变量 i 的初始值是 -N,每次步长为 2,并且循环结束的条件是 i < N。这意味着数列的最后一项必定是 N-2(因为如果再加上2,就会变成N,不满足 < N 的条件)。
所以,这个循环产生的 i 的序列是:-N, -N+2, -N+4, …, N-4, N-2

第8题

执行C++语句printf("%d\n", 3.14)将报错。

A. 正确

B. 错误

【答案】:B

【解析】

3.14是 double 类型的数据,使用 %d 会输出无意义的整数值(可能是0或其他值),但不会编译报错或程序崩溃。

第9题

执行下面的C++代码后将输出2500

intcnt=0;for(inti=1;i<100;i++)cnt+=i++;cout<<cnt;

A. 正确

B. 错误

【答案】:B

【解析】

循环体内 i++ 加上 for 头部的 i++ 导致每次增加2,即求奇数项 1+3+5+…+99 的和 =2500。

第10题

小明在测试C++的printf的功能时执行了printf("%-5d\n", 314),则代码输出的结果是-5314

A. 正确

B. 错误

【答案】:B

【解析】

%-5d 表示左对齐,占据至少 5 个字符宽度。输出结果应为 314 后跟两个空格,并不是 -5314。

编程题

题解:洛谷 B4495 [GESP202603 一级] 交朋友

题解:洛谷 B4496 [GESP202603 一级] 数字替换

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

3、【AI产品经理概述】AI产品经理与传统产品经理的区别

很多从传统互联网转型过来的朋友&#xff0c;在第一次接手 AI 项目时&#xff0c;往往会感到一种强烈的“失重感”。过去那套行之有效的打法——画原型、写文档、跟开发对需求、上线看数据——在面对大模型或算法项目时&#xff0c;突然变得有些使不上劲。你发现需求不再是确定…

作者头像 李华
网站建设 2026/6/10 9:50:46

Arduino入门教程八|按钮消抖动原理+实操(计数器+灯光控制)

我整理了一套Arduino 零基础 从入门到高级 完整系统课程&#xff0c;包含视频讲解、全套源码、接线图纸、库文件、ESP32/ESP32-S3 摄像头 & 物联网实战项目&#xff0c;循序渐进&#xff0c;新手也能零基础吃透。需要系统学习可以查看我主页专属课程&#xff08;零基础保姆…

作者头像 李华
网站建设 2026/6/10 9:48:45

大模型服务端如何命中缓存

claude code在接入第三方大模型api时&#xff0c;越用越慢&#xff0c;token耗费剧增的根本原因就是claude code干了一件很狗的事情&#xff0c;它在cch请求头加上了随机数&#xff0c;导致第三方大模型api无法命中缓存&#xff0c;而anthropic自己的api则是直接忽略这个随机的…

作者头像 李华
网站建设 2026/6/10 9:48:26

FPGA神经网络数学基础1

向量空间 本章的问题背景&#xff1a;之前我们介绍了用高斯消元、LU分解从计算层面求解Axb&#xff0c;解决了怎么算的问题&#xff0c;但没有回答解的结构是什么、为什么解是这样的问题。消元只能给出单个解&#xff0c;而线性代数的核心是空间结构。方程组的解不是孤立的点&a…

作者头像 李华
网站建设 2026/6/10 9:43:09

人工智能专业术语详解(E)

在人工智能领域&#xff0c;以字母“E”开头的四个术语——Embedding&#xff08;嵌入&#xff09;、Ensemble Methods&#xff08;集成方法&#xff09;、Entropy&#xff08;熵&#xff09;和Epoch&#xff08;时期&#xff09;——构成了从数据表示、模型设计、优化目标到训…

作者头像 李华