点击上方蓝字·关注我们



CCF编程能力等级认证,英文名Grade Examination of Software Programming(以下简称GESP),由中国计算机学会发起并主办,是为青少年计算机和编程学习者提供学业能力验证的平台。GESP覆盖中小学全学段,符合条件的青少年均可参加认证。GESP旨在提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。
GESP考察语言为图形化编程、Python编程及C++编程,主要考察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程能力,为后期专业化编程学习打下良好基础。
本次为大家带来的是2025年3月C++一级认证真题解析。
C++一级
一、单选题
第1题 2025年春节有两件轰动全球的事件,一个是DeepSeek横空出世,另一个是贺岁片《哪吒2》票房惊人,入了全球票房榜。下面关于DeepSeek与《哪吒2》的描述成立的是( )。
A.《哪吒2》是一款新型操作系统
B. DeepSeek是深海钻探软件
C.《哪吒2》可以生成新的软件
D. DeepSeek可以根据《哪吒2》的场景生成剧情脚本
答案:D
解析:哪吒2是电影作品,deepseek是人工智能语言模型,A、B、C三个选项描述均错误,只有D选项描述正确,deepseek具有强大的自然语言处理能力,可以根据场景生成剧情脚本。
第2题 在某集成开发环境中编辑一个源代码文件时不可以执行下面( )操作。
A.修改变量定义
B.保存代码修改
C.撤销代码修改
D.插入执行截图
答案:D
解析:在编辑代码过程中,可以修改变量定义,可以保存程序,书写错误可以撤销修改,这些操作都是常见的代码编辑情况,只有D选项错误,不可以在代码中插入截图。
第3题 在C++中,下列可以做变量的是( )。
A. Var-1
B. $1
C. %%1
D. _Var_1
答案:D
解析:在C++中变量定义规则是:仅由数字、字母、下划线组成,数字不可以开头,不能和关键字冲突。选项A、B、C中均有不符合要求的字符,只有D选项正确。
第4题 以下哪个是C++语言的关键字?( )
A. abs
B. cin
C. do
D. endl
答案:C
解析:C++语言的关键字是被语言本身定义的具有特定含义的标识符。“do”是C++中的关键字,用于构成“do - while”循环语句。而A选项“abs”是C++标准库中的函数名,用于计算绝对值;B选项“cin”和D选项“endl”都不是关键字,“cin”是C++标准输入流对象,“endl”是C++标准库中的操纵符,用于插入换行符并刷新输出缓冲区。
第5题 下面的框架在L1和L2标记的两行处分别填写选项中的代码,哪组不能通过编译( )。

A.

B.

C.

D.

答案:C
解析:本题考查基础语法,分支语句if是不可以直接使用break的,需要配合循环或switch使用,故只有C选项会编译失败。
第6题 下面C++语句( )执行后的输出是 __ 0322$$ 。
A. printf("__ %2d%02d$$", 3, 22)
B. printf("__ %02d%2d$$", 3, 22)
C. printf("__ %02d%02d$$$$", 3, 22)
D. printf(" %02d%02d$$$$", 3, 22)
答案:B
解析:%02d补前导零,数字3前补0,凑两位,%2d右对齐,22本身就是两位,组合输出03和22,而$是普通字符输出,故选择B选项。
第7题 有关下列C++代码的说法,错误的是( )。

A.配对双引号内的汉字改为英文Hello ,C++代码能正确执行
B.配对双引号内的汉字改为Hello代码!,C++代码能正确执行
C.代码中的每个双引号,都可以改为两个单引号
D.代码中的每个双引号,都可以改为三个双引号
答案:C
解析:首先D选项改为三引号,是符合语法的,不会报错,其次单引号用于字符,双引号用于字符串,不能相互替代,C选项错误。
第8题 C++表达式16 / 4 % 2 的值是( )。
A. 8
B. 4
C. 2
D. 0
答案:D
解析:/号和%号为同级运算,没有先后顺序,按照从左到右的顺序计算,16/4结果为4,4%2结果为0。
第9题 N是C++的正整数,值为12,则cout << (N % 3 + N / 5) 的输出是( )。
A. 6.4
B. 2.4
C. 6
D. 2
答案:D
解析:变量N = 12 依照运算优先级,先计算12%3=0,12/5=2(整除),输出的是0+2=2。
第10题 下面C++代码执行后的输出是( )。

A. 10 * 10 = {10 * 10}
B. 100=10
C. N*N=100
D. {N}*{N} = {10 * 10}
答案:D
解析:在printf格式化输出时,%d占位符会原样输出,两个%d显示成10,其余所有符号都正常输出,结果为D选项。
第11题 执行下面的C++代码,在键盘上先后输入100和200,输出是( )。

A. 200
B. 100
C. 1
D. 0
答案:D
解析:first=100,second=200,依照从左至右顺序,100/200由于整除结果为0,乘以200后结果依然为0,选择D选项。
第12题 下面C++代码执行后,将输出能被2整除且除以7余数为2的数。下列选项不能实现的是( )。

A. ((i % 2 == 0) && (i % 7 == 2))
B. ((!(i % 2)) && (i % 7 == 2))
C. ((!(i % 2)) && (!(i % 7)))
D. ((i % 2 != 1) && (i % 7 == 2))
答案:C
解析:选项C中&&前半部分!(i%2),可以判断是否被2整除,但是后半部分!(i%7),只能判断是否被7整除,不能判断是否余数为2。
第13题 下面C++代码执行后输出是( )。

A. -1000
B. 0
C. 999
D. 1000
答案:A
解析:观察题目给出的程序,属于对称区间求和,从-999 ~ -1 和1 ~ 999 会相互抵消,剩下的是-1000。
第14题 下面C++代码执行后输出的是( )。

A. 101
B. 100
C. 99
D. 96
答案:A
解析:依照题目给出的程序,循环变量i以步长为5,一直增大,i=96是符合循环条件可以继续循环的,再增大一次i=101,退出循环,最终变量i为101。
第15题 下面C++代码执行后输出的是( )。

A. 500
B. 450
C. 10
D. 1
答案:C
解析:依照题目给出的程序,遍历过程中i=5,10,15~90,95(i<100),仅当i=5,15,25,35,45,55,65,75,85,95满足奇数条件,tnt变量会自增1,最终tnt=10,整个循环过程中并不会被break打断。
二、判断题
第1题C++、Python都是高级编程语言,它们的每条语句最终都要通过机器指令来完成。( )
答案:正确
解析:高级语言需要编译为机器码执行,C++、Python都是高级编程语言,题目描述正确。
第2题 在C++中表达式N * 2 % N 中如果N的值为正整数,则其值为2。( )
答案:错误
解析:当N为正整数时,表达式是整除的,最终结果为0。
第3题 执行如下C++代码如果在键盘上输入10,执行后将输出20。( )

答案:错误
解析:变量N不是int类型,char类型范围有限,输入10时,N只接收字符'1',且输出ASCII码而非数值,题目描述错误。
第4题 删除下面C++代码中的continue不影响程序的执行效果。( )

答案:正确
解析:依照题目给出程序,在执行完if语句,输出偶数两个字之后,会执行下一次循环,是否书写continue并没有影响。
第5题 下面C++代码执行时将报错,因为所在位置应该是变量名,而_不可以做变量名。( )

答案:错误
解析:程序不会报错,依照变量名的命名规则,下划线是合法变量名。
第6题 下面C++代码被执行后,将先后输出3和5。( )

答案:错误
解析:循环过程中变量i为3可以循环,输出数字3,增加2后变量变为5,不符合<5,循环结束,不会输出5。
第7题 下面的C++代码执行后将先后输出7个true。( )

答案:错误
解析:当i=0时,0<0为假,i=1时,2<1为假,i=2时,4<4为假,其余i≥3时成立,共7个真,但是会打印3个0,7个1,不是打印true这个单词。
第8题 在C++代码中,user_Name、userName、user-Name、userName都是合法的变量名。( )
答案:错误
解析:变量名仅能由数字、字母、下划线构成,其中user-Name是不合法变量名。
第9题 C++语言中continue语句可以来提前结束循环。( )
答案:错误
解析:continue是跳过本次循环,继续执行下一次循环,break语句才是打断,用于结束循环。
第10题 C++中定义整型变量N,执行语句scanf("%d", &N); cout << N / 3 * 5; 时输入3.6,则输出是6。( )
答案:错误
解析:输入3.6,设置的%d接收的是3,而非3.6,计算:3/3*5=5,故输出6是错误描述。
三、编程题
编程题1
图书馆里的老鼠
题目描述
图书馆里有n本书,不幸的是,还混入了一只老鼠,老鼠每x小时能啃光一本书,假设老鼠在啃光一本书之前,不会啃另一本。请问y小时后图书馆里还剩下多少本完整的书。
输入格式
三行,第一行一个正整数 ,表示图书馆里书的数量;
第二行,一个正整数 ,表示老鼠啃光一本书需要的时间;
第三行,一个正整数 ,表示经过的总时间;
输入数据保证 小时后至少会剩下一本完整的书。
输出格式
一行,一个整数,表示 小时后图书馆里还剩下多少本完整的书。
输入样例1
10
2
3
输出样例1
8
解析:
定义变量 n 表示书的总数,x 表示老鼠啃光一本书所需的小时数,y 表示经过的小时数,ans 表示剩余完整书的数量,assert()断言输入的 n、x 和 y 的值在有效范围内(1 到 1000 之间)。计算剩余完整书的数量,y / x 表示在 y 小时内老鼠啃光的整本书的数量,(y % x == 0) 用于处理 y 能被 x 整除的情况,assert(ans >= 1) 断言计算得到的剩余书的数量至少为 1,最后输出剩余完整书的数量。
参考代码:

编程题2
四舍五入
题目描述
四舍五入是一种常见的近似计算方法。现在,给定n个整数,你需要将每个整数四舍五入到最接近的整十数。例如,43四舍五入后为40,58四舍五入后为60。
输入格式
共n+1行,第一行,一个整数n,表示接下来输入的整数个数。接下来n行,每行一个整数a1 a2 ... an,表示需要四舍五入的整数。
输入样例1
5
43
58
25
67
90
输入样例2
40
60
30
70
90
解析:
首先定义变量,然后输入数据,断言输入数据是否符合要求,循环n次接收n个数据,对于每次接收的数字x做加5处理,例如43在加5后会不满50,做整除10,乘以10计算,结果为40,如果是个位达到5,45+5=50,50/10*10结果为50,可以实现题目要求的四舍五入,最后注意输出格式要求,每输出一个答案都配合换行格式。
参考代码:

策划:GESP技术委员会副主席 刘晓庆
技术支持:马长明


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