点击上方蓝字·关注我们



CCF编程能力等级认证,英文名Grade Examination of Software Programming(以下简称GESP),由中国计算机学会发起并主办,是为青少年计算机和编程学习者提供学业能力验证的平台。GESP覆盖中小学全学段,符合条件的青少年均可参加认证。GESP旨在提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。
GESP考察语言为图形化编程、Python编程及C++编程,主要考察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程能力,为后期专业化编程学习打下良好基础。
本次为大家带来的是2025年6月C++一级认证真题解析。
C++一级
2025年06月
一、单选题(每题2分,共30分)
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
答案 | C | A | D | D | C | B | D | C | A | B | A | C | D | C | B |
1、2025年4月19日在北京举行了一场颇为瞩目的人形机器人半程马拉松赛。比赛期间,跑动着的机器人会利用身上安装的多个传感器所反馈的数据来调整姿态、保持平衡等,那么这类传感器类似于计算机的( )。
A.处理器
B.存储器
C.输入设备
D.输出设备
【答案】C
【考纲知识点】计算机基础
【解析】传感器用于收集数据并反馈给机器人,类似于计算机的输入设备。
2、在某集成开发环境中调试下面代码段时尝试设置断点和检查局部变量,下面哪个说法是错误的( )。

A.断点不可以设在L1标记的代码行
B.执行暂停在L2标记的代码行时,可以检测i的值
C.执行暂停在L3标记的代码行时,可以修改i的值
D.执行有可能暂停在L4标记的代码行
【答案】A
【考纲知识点】计算机基础与编程环境
【解析】断点可以设在任何可执行代码行,包括变量声明行(L1)。
3、对下列C++的代码,描述准确的是( )。

A.执行后输出10
B.执行后输出 {First}
C.执行后输出 "{First}"
D.编译报错,因为First应该是first
【答案】D
【考纲知识点】变量的定义与使用
【解析】C++区分大小写,First未定义,应使用first,因此编译报错。
4、在C++中,下列可以做变量名的是( )。
A. X.cpp
B. X-cpp
C. X#cpp
D. X_cpp
【答案】D
【考纲知识点】变量的定义
【解析】变量名可包含字母、数字和下划线,但不能以数字开头或使用特殊字符
5、C++表达式14-3*3%2 的值是( )。
A. 0
B. 11
C. 13
D. -67
【答案】C
【考纲知识点】算术运算
【解析】乘法、取余优先级高于减法,先计算3*3=9,9%2=1,14-1=13
6、下面的C++代码执行后,其输出是( )。

A. 10 20
B. 20 10
C. 10 10
D. 20 20
【答案】B
【考纲知识点】算术运算
【解析】代码通过加减法交换x和y的值,第2行x=10+20=30,第3行y=30-20=10,第4行x=30-10=20,最终输出20 10
7、定义整型变量int a=16 ,则执行++a += 3 之后,a的值会是( )。
A. 3
B. 17
C. 19
D. 20
【答案】D
【考纲知识点】基本运算
【解析】++a先增为17,再+=3得20
8、C++的int 类型变量X 的值为8,如果执行cout << (++X)++; ,则输出和执行后X 的值分别是( )。
A. 8 9
B. 9 9
C. 9 10
D.编译错误,无法执行
【答案】C
【考纲知识点】基本运算
【解析】括号优先运算,所有(++x)先增x为9并输出9,再执行后置的++增为10
9、下面C++代码执行后的输出是( )。

A. a+b=07#a+b={a+b}
B. a+b= 7#a+b=7
C. a+b=7#a+b={a+b}
D. a+b=7#a+b=7
【答案】A
【考纲知识点】输入输出语句
【解析】%02d表示输出整数至少占2位,不足时左侧补0,所以a+b的值7补足为07,其余内容为普通字符串原样输出或填充了空白符
10、下面的C++代码用于求M天后是星期几,两处横线处分别应填入的代码是( )。

A. 
B. 
C. 
D. 
【答案】B
【考纲知识点】基本运算、选择结构
【解析】D = (N + M) % 7计算余数,D == 0判断是否为星期日
11、下面C++代码执行后输出是( )。

A. END
B. 1#
【答案】A
【考纲知识点】循环结构、分支结构、输入输出语句
【解析】循环内continue会跳过循环内后续代码,循环时i依次为1、4、7、10、13,结束后i=13,输出END
12、下面的C++代码用于求N的所有因数(即能将N整除的数),如输入12则将输出12,6,4,3,2,1 。( )。

A. i -= 1
B. i == 1
C. i > 1
D. i >= 1
【答案】C
【考纲知识点】循环结构、分支结构
【解析】因为最后第9行输出了1,所以循环里枚举的是N到2的所有因数,i > 1确保循环到2,输出所有因数(除1外),最后补1
13、下面C++代码执行后输出的是( )。

A. 55
B. 15
C. 9
D. 4
【答案】D
【考纲知识点】循环结构、分支结构
【解析】i为偶数时满足第1个if会跳过,只累加奇数(1,3,5,7…..),当i=5时满足i%5==0时结束循环,实际累加1+3=4
14、试图编译并执行下面C++代码,下面描述正确的是( )。

A.输出 101
B.输出 102
C.输出 103
D.编译将报错,无法执行
【答案】C
【考纲知识点】基本运算
【解析】x=101,第3行x++为102,第4行++x为103,输出103
15、以下C++代码可以找出百位、十位和个位满足特定条件的三位数,横线处应该填入的是( )

A. int b = (i / 10) / 10;
B. int b = (i / 10) % 10;
C. int b = (i % 10) / 10;
D. int b = (i % 10) % 10;
【答案】B
【考纲知识点】循环结构、基本运算
【解析】a获取百位,b十位数通过(i / 10) % 10获取,c获取个位
二、判断题(每题2分,共20分)
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
答案 | √ | × | √ | × | × | × | × | × | √ | × |
1、人们现在参加很多闭卷考试时通常都不允许带智能手机、平板电脑等,此外很多种智能手表同样因为具有嵌入操作系统及通信等功能,所以也不允许随身携带。( )
【答案】正确
【考纲知识点】计算机基础
【解析】智能设备通常因通信功能被禁止
2、如果N是C++的整型变量,值为5,则表达式(N + !N) 的值为4。( )
【答案】错误
【考纲知识点】基本运算
【解析】!N为0(非0为假),N + !N = 5 + 0 = 5
3、在下面C++代码中,删除break语句对程序执行结果没有影响。( )

【答案】正确
【考纲知识点】循环结构、分支结构
【解析】break在continue后本就无法执行,删除无影响
4、删除下面C++代码中的continue后其输出是0#2#4#6#8#。( )

【答案】错误
【考纲知识点】循环结构、分支结构
【解析】删除后输出0#2#4#6#8#END,循环结束后i=10,所以满足第8行的条件最后输出END
5、将下面C++代码中的i < 100; i = i + 1 修改为i < 200; i += i + 1 ,其输出与当前代码输出相同。()

【答案】错误
【考纲知识点】循环结构
【解析】改之前循环100次,cnt=100,修改后循环8次,i依次为0,1,3,7,15,31,63,127,255,255时不满足i<200,cnt=8,输出不同
6、交换下面C++代码中的i += 2 和 cnt += 1 ,交换前后分别运行的两次输出相同。( )

【答案】错误
【考纲知识点】循环结构、变量的定义
【解析】i没有初始化,值是随机的,每次运行结果都可能不一样
7、下面的C++代码执行后将输出45。( )

【答案】错误
【考纲知识点】循环结构、变量的定义
【解析】cnt没有初始化,值是随机的
8、执行C++代码cout << (12 + 12.12)将报错,因为12是int类型,而12.12是float类型,不同类型不能直接运算。( )
【答案】错误
【考纲知识点】基本运算
【解析】C++允许int与double混合运算,会自动把int转为double进行计算,输出24.12。本题题面也存在不准确,即:字面值12.12不是float类型。
9、在C++代码中,不可以将变量命名为false,因为false是C++语言的关键字。( )
【答案】正确
【考纲知识点】基本数据类型
【解析】false为关键字,不能作变量名
10、X是C++的整型变量,则表达式3 < X < 5 求值结果是4。( )
【答案】错误
【考纲知识点】关系运算
【解析】关系运算的结果是布尔类型,先计算3<X,再计算(3<X)<5,结果应为0或1
三、编程题(每题25分,共50分)
题号 | 1 | 2 |
答案 |
3.1编程题1
试题名称:假期阅读
时间限制:1.0 s
内存限制:512.0 MB
3.1.1
题目描述
小A 有⼀本厚厚的书。这本书总共有n页,小A⼀天中最多只能阅读完其中的k页。小A的假期总共有t天,他想知道在假期中最多能阅读完这本书的多少页。
3.1.2
输入格式
第⼀行,⼀个正整数n,表示书的页数。
第⼆行,⼀个正整数k,表示小A每天最多阅读的页数。
第三行,⼀个正整数t,表示小A假期的天数。
3.1.3
输出格式
⼀行,⼀个整数,表示假期中所能阅读的最多页数。
3.1.4
样例
3.1.4.1
输入样例1
3.1.4.2
输出样例1
3.1.4.3
输入样例2
3.1.4.4
输出样例2
3.1.5
数据范围
对于所有测试点,保证n,k,t均不超过1000。
3.1.6
【考纲知识点】分支结构、基本运算、输入输出语句
【解题思路】
小A在t天里最多读t*k页,因为书只有n页,所以如果t*k超过n,那么也只能读n页
【程序解析】按题目要求定义n,k,t变量,定义ans变量表示所能阅读的最多页数,小A在t天读k*t页,即ans=k*t,但书的总页数为n,所以当ans>n时将ans的值替换成n,最后输出ans的值
【参考程序】

3.2
编程题2
试题名称:值日
时间限制:1.0 s
内存限制:512.0 MB
3.2.1
题目描述
小杨和小红是值日⽣,负责打扫教室。小杨每m天值日⼀次,小红每n天值日⼀次。今天他们两个⼀起值日,请问至少多少天后,他们会再次同⼀天值日?
3.2.2
输入格式
第⼀行,⼀个正整数m,表示小杨的值日周期;
第⼆行,⼀个正整数n,表示小红的值日周期。
3.2.3
输出格式
⼀行,⼀个整数,表示至少多少天后他们会再次同⼀天值日。
3.2.4
样例
3.2.4.1
输入样例1
3.2.4.2
输出样例1

3.2.5
数据范围
对于所有测试点,保证1≤m,n≤ 100。
3.2.6
【考纲知识点】循环结构、分支结构
【解题思路】这道题目要求计算小杨和小红再次同一天值日的最小天数。小杨每m 天值日一次,小红每n天值日一次。他们今天一起值日,那么下一次同一天值日的天数就是m 和n的最小公倍数,题目给出的数据量较小,可以直接使用遍历的方法,从较大的数开始逐个检查是否能被m 和n 整除。这种方法简单直观,适合小范围数据。
【程序解析】
读取小杨的值日周期m和小红的值日周期n,从m和n的较大数(即max(m,n))开始逐个检查每个整数i。 如果i能被m和n同时整除(即i%m==0且i%n==0),则i就是最小公倍数,输出i并结束程序。
【参考程序】

策划:GESP技术委员会副主席 刘晓庆
技术支持:韩丹



1.GESP微信:关注“CCF GESP”公众号,点击"GESP小助手"即可交流。
2.GESP邮箱:gesp@ccf.org.cn
注:请在邮件中详细描述咨询的问题并留下考生的联系方式及姓名、身份证号,以便及时有效处理。
3.GESP电话:0512-67656856
咨询时间:周一至周五(法定节假日除外):上午 8:30-12:00;下午 13:00-17:30
