GESP第十次认证真题解析|C++二级真题回顾

四季读书网 2 0
GESP第十次认证真题解析|C++二级真题回顾

点击上方蓝字·关注我们

GESP第十次认证真题解析|C++二级真题回顾-第1张图片-四季读书网
GESP第十次认证真题解析|C++二级真题回顾-第2张图片-四季读书网
GESP第十次认证真题解析|C++二级真题回顾-第3张图片-四季读书网

CCF编程能力等级认证,英文名Grade Examination of Software Programming(以下简称GESP),由中国计算机学会发起并主办,是为青少年计算机和编程学习者提供学业能力验证的平台。GESP覆盖中小学全学段,符合条件的青少年均可参加认证。GESP旨在提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。

GESP考察语言为图形化编程、Python编程及C++编程,主要考察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程能力,为后期专业化编程学习打下良好基础。

本次为大家带来的是20256月C++二级认证真题解析。

C++二级

202506

一、单选题(每题2分,共30分)

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

答案

C

A

C

A

D

D

C

C

B

A

D

D

D

D

A

1题 2025419日在北京举行了一场颇为瞩目的人形机器人半程马拉松赛。比赛期间,跑动着的机器人会利用 身上安装的多个传感器所反馈的数据来调整姿态、保持平衡等,那么这类传感器类似于计算机的( )

A.处理器

B.存储器

C.输入设备

D.输出设备

【参考答案C

【答案解析】机器人身上的传感器类似计算机的输入设备,常见的传感器有温度传感器、压力传感器、陀螺仪等,负责将信号传递给芯片用于分析机器人相关情况。

2题 小明购置的计算机使用一年后觉得内存不够用了,想购置一个容量更大的内存条,这时他需要的内存条是( )

A. RAM 

B. ROM 

C. CACHE 

D. EPROM

【参考答案】A

【答案解析】内存条的英文简称是RAM,指的是计算机的运行内存,运行内存容量越多,可以同时处理的任务、同时工作的软件数量就越多。

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

GESP第十次认证真题解析|C++二级真题回顾-第4张图片-四季读书网

A. 3 

B. 3.5 

C. 10 

D. 11

【参考答案】C

【答案解析】依据题目给出的程序计算,a*=b等同于a = a * b3 * 3.5 = 10.5,赋值给整型a时截断为10

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

GESP第十次认证真题解析|C++二级真题回顾-第5张图片-四季读书网

A. N % 1000 / 100 

B. N / 1000 % 100 

C. N / 1000 / 100 

D. N % 100 / 100

【参考答案】A

【答案解析】N % 1000 取后三位,再/ 100 得到百位数,例如3582%100=582582/100 = 8

5题 下面C++代码执行,其输出是()

GESP第十次认证真题解析|C++二级真题回顾-第6张图片-四季读书网

A. 6 28 

B. 6 6 

C. 28 6 

D. 28 28

【参考答案】D

【答案解析】依据题目所给出的程序分析,b=(6,28)中逗号运算符取最右边值,b28b==a仅作比较,不改变值,a=b使a也为28。最终输出28 28

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

GESP第十次认证真题解析|C++二级真题回顾-第7张图片-四季读书网

A. (N+6)/7 

B. (N+6)//7 

C. N % 7 

D. (N+6) %7

【参考答案】D

【答案解析】依据题目的描述今天是星期六,经过N天可以求得N+6,使用总的天数对7进行取余,如果整除的话即为星期天,如果有余数,余数就是对应的星期,正确答案是D选项  

7题 下面的C++代码执行后其输出是()

GESP第十次认证真题解析|C++二级真题回顾-第8张图片-四季读书网

A. 45 

B. 28 

C. 3 

D. 0

【参考答案】C

【答案解析】依照题目所给出的程序,首先循环变量为1,在累加完成后,1%2=1if条件成立,本次循环会被跳过,第二次循环变量为2,第一个if条件不成立, 但是第二个if条件成立,程序会被break语句打断,最终输出的结果为1+2的累加值3

8题 下面C++代码执行后其输出是()

GESP第十次认证真题解析|C++二级真题回顾-第9张图片-四季读书网

A. 110 

B. 22 

C. 12 

D. 3

【参考答案】C

【答案解析】代码break只能结束一层循环,故外层循环仍在继续。当i=11j=1i*j%2==1成立,内层循环break,将会执行外层循环的i++,最终i=12, j=1。输出为i*j=12*1=12

9题 下面C++代码执行后输出是()

GESP第十次认证真题解析|C++二级真题回顾-第10张图片-四季读书网

A. 101 

B. 100 

C. 99 

D. 98

【参考答案】B

【答案解析】依照题目所给出的程序,循环的范围是-99+99,循环步长为2,循环共执行100次,注意代码中第三行写法,其实就是我们平时书写的cnt=cnt+1

10题 下面C++代码执行后输出是( )

GESP第十次认证真题解析|C++二级真题回顾-第11张图片-四季读书网

A. A#A

B. A#0#A#0 

C. A#A#1 

D. A#0#A#0#1

【参考答案】A

【答案解析】依据题目给出的程序,首先循环变量为1执行第一个if语句,输出A#,第二次循环变量为2也可以执行第一个if语句,输出A#,第三次循环变量为3执行else循环被打断,整个程序结束,最终输出A#A#

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

GESP第十次认证真题解析|C++二级真题回顾-第12张图片-四季读书网

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

【答案解析】依据题目所给出的程序,循环变量i取值为012,为0时内层循环不执行,i1时,j=0,输出1#0-i2时,j可以取值01,分别输出2#0-2#1-,最后程序输出END

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

GESP第十次认证真题解析|C++二级真题回顾-第13张图片-四季读书网

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

【答案解析】题目要求输出“不能被3整除” 且 “除以5余数为2”的数“不能被3整除” 表达式为 i % 3 != 0 i % 3 (非零即真)。“除以5余数为2”表达式为i % 5 == 2。因此,正确的条件应该是(i % 3 != 0) && (i % 5 == 2)A选项: (i % 3 != 0) && (i%5==2),正确。B选项: (i % 3) && (i%5==2),正确(i%3C++中非零即真,等同于i%3!=0)。C选项: (i % 3) && !(i % 5 != 2)!(i % 5 != 2) 等同于(i % 5 == 2)。所以C选项也正确。D选项: !(i%3) && (i%5==2)!(i%3)等同于i%3 == 0,表示“能被3整除”,与题目要求“不能被3整除”相反。所以D选项不能实现。

13题 下面C++代码用于判断一个大于0的正整数是几位数,横线处应填入代码先后是( )

GESP第十次认证真题解析|C++二级真题回顾-第14张图片-四季读书网

A.GESP第十次认证真题解析|C++二级真题回顾-第15张图片-四季读书网B.GESP第十次认证真题解析|C++二级真题回顾-第16张图片-四季读书网C.GESP第十次认证真题解析|C++二级真题回顾-第17张图片-四季读书网D.GESP第十次认证真题解析|C++二级真题回顾-第18张图片-四季读书网

【参考答案】D

【答案解析】计数一个数的位数通常使用循环,每次将数字除以10,直到数字变为0。计数器每次加1while循环的条件是N > 0 (或者N != 0),只要数字还有位,就继续循环。 循环体内,cnt += 1 计数位数,N /= 10 去掉一位。 选项D: N>0 N/=10符合逻辑

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

GESP第十次认证真题解析|C++二级真题回顾-第19张图片-四季读书网

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

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

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

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

【参考答案D

【答案解析】N是原始输入值,在循环中未改变。N1是一个副本,在循环中不断被修改,直至变为0。如果条件改为N>0,循环会变成无限循环

15题 下面C++代码实现输出如下图形,相关说法错误的是()

GESP第十次认证真题解析|C++二级真题回顾-第20张图片-四季读书网

A.代码now_number = 0移动到L1L2标记的两行代码之间,效果维持不变

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

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

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

【参考答案】A

【答案解析】now_number = 0 在循环外初始化,确保数字从0开始递增。如果移到L1L2之间(即内层循环内或外层循环每次迭代开始),now_number会在每次迭代或每次内层循环开始时重置为0,导致输出图案错误

二、判断题(每题2,20)

题号

1

2

3

4

5

6

7

8

9

10

答案

×

×

×

×

×

×

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

【参考答案】正确

【答案解析】题目中所描述的智能设备,如果带入考场内,可能会有作弊的情况产生,所以不允许携带进入考场

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

【参考答案】正确

【答案解析】整数除/10 小于10的数字整除10结果为0,大于10的数字会被消除掉个位

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

GESP第十次认证真题解析|C++二级真题回顾-第21张图片-四季读书网

【参考答案】错误

【答案解析】a==bb==a确实不改变ab的值。但cout << (a, b); 会使用逗号运算符,输出最右边表达式的值,即b的值20。所以输出是20,不是10 20

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

【参考答案】正确

【答案解析】当且仅当两个数相等时,它们的最大值和最小值才会相等,题目描述正确

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

GESP第十次认证真题解析|C++二级真题回顾-第22张图片-四季读书网

【参考答案】错误

【答案解析】char类型可以存储整数值(ASCII码),浮点数45.6会被隐式转换为整数45,然后赋值给char a。编译不会报错,但可能会有警告。45对应的ASCII字符是'-'

6题 下面C++代码执行时如输入59.99.输出及格两个汉字。()

GESP第十次认证真题解析|C++二级真题回顾-第23张图片-四季读书网

【参考答案】错误

【答案解析】scoreint类型,输入59.99时,cin会截断小数,仅读取59,从而score实际存储为5959 < 60 为真,所以输出 “不及格”

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

GESP第十次认证真题解析|C++二级真题回顾-第24张图片-四季读书网

【参考答案】错误

【答案解析】依据题目给出的程序分析,for循环结束后i等于10,符合if条件,因此cout << "END";

8题 下面的C++代码执行后将输出15()

GESP第十次认证真题解析|C++二级真题回顾-第25张图片-四季读书网

【参考答案】错误

【答案解析】循环中i的值依次为0, 1, 2, 3, 4Sum = 0 + 1 + 2 + 3 + 4 = 10。所以输出是10,不是15

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

GESP第十次认证真题解析|C++二级真题回顾-第26张图片-四季读书网

【参考答案】错误

【答案解析】原代码:i依次为5, 4, 3, 2tnt = 5+4+3+2 = 14。 修改后:i依次为1, 2, 3, 4tnt = 1+2+3+4 = 10。 结果不相同

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

GESP第十次认证真题解析|C++二级真题回顾-第27张图片-四季读书网

【参考答案】正确

【答案解析】当N为奇数时,N/2(N-1)/2相等(例如N=5, N/2=2, (N-1)/2=2),所以只有中间一列是*。 当 N为偶数时,N/2(N-1)/2不相等且相邻(例如N=4, N/2=2, (N-1)/2=1),所以中间两列是*。 其余为 -。代码逻辑正确

三、编程题(每题25分,共50)

题号

1

2

答案

3.1编程题1

试题名称:数三角形

时间限制: 1.0 s 

内存限制:512.0 MB

3.1.1题目描述

直角三角形有两条直角边与一条斜边,设两条直角边的长度分别为a,b则直角三角形的面积为。 请你计算当直角边长a,b均取不超过的正整数时,有多少个不同的面积为整数的直角三角形。直角边长分别为a, b a', b'的两个直角三角形相同,且仅当a=a', b=b' 或者a=b', b=a'

3.1.2输入格式

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

3.1.3输出格式

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

3.1.4样例

3.1.4.1输入样例1

GESP第十次认证真题解析|C++二级真题回顾-第28张图片-四季读书网

3.1.4.2输出样例1

GESP第十次认证真题解析|C++二级真题回顾-第29张图片-四季读书网

3.1.4.3输入样例2

GESP第十次认证真题解析|C++二级真题回顾-第30张图片-四季读书网

3.1.4.4输出样例2

GESP第十次认证真题解析|C++二级真题回顾-第31张图片-四季读书网

3.1.5数据范围 对于所有测试点,保证1≤ n≤ 1000

【代码解析】题目要求面积为整数的直角三角形数量,面积为(a*b)/2。当a*b为偶数时,面积为整数。代码通过两层循环遍历所有ab的组合(其中a <= b 避免重复计数),然后判断a*b是否为偶数

3.1.6参考程序

GESP第十次认证真题解析|C++二级真题回顾-第32张图片-四季读书网

3.2编程题2

试题名称:幂和数

时间限制: 1.0 s 

内存限制:512MB

3.2.1题目描述

对于正整数n,如果可以表为两个2的次幂之和,n=2x+2y( x, y均为非负整数),那么称为幂和数。给定正整数lr,请你求出满足l≤n≤r的整数n中有多少个幂和数。

3.2.2输入格式

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

3.2.3输出格式

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

3.2.4样例

3.2.4.1输入样例1

GESP第十次认证真题解析|C++二级真题回顾-第33张图片-四季读书网

3.2.4.2输出样例1

GESP第十次认证真题解析|C++二级真题回顾-第34张图片-四季读书网

3.2.4.3输入样例2

GESP第十次认证真题解析|C++二级真题回顾-第35张图片-四季读书网

3.2.4.4输出样例2

GESP第十次认证真题解析|C++二级真题回顾-第36张图片-四季读书网

3.2.5数据范围

对于所有测试点,保证1≤l≤r≤10^4

【代码解析】题目要求找出之间可以表示为2x+2y形式的数。代码使用两层while 循环生成所有2x2y的组合(分别代表2x2y)。通过a*=2 b*=2 来生成下一个2的幂。检查a+b 是否在[l, r] 范围内,如果在则计数

3.2.6参考程序

GESP第十次认证真题解析|C++二级真题回顾-第37张图片-四季读书网

策划:GESP技术委员会副主席 刘晓庆

技术支持:马长明

GESP第十次认证真题解析|C++二级真题回顾-第38张图片-四季读书网
GESP第十次认证真题解析|C++二级真题回顾-第39张图片-四季读书网
联系方式

1.GESP微信:关注CCF GESP公众号,点击"GESP小助手"即可交流

2.GESP邮箱:gesp@ccf.org.cn

注:请在邮件中详细描述咨询的问题并留下考生的联系方式及姓名、身份证号,以便及时有效处理。

3.GESP电话:0512-67656856

咨询时间:周一至周五(法定节假日除外):上午 8:30-12:00;下午 13:00-17:30

扫描下方二维码,关注GESP公众号了解更多咨询
GESP第十次认证真题解析|C++二级真题回顾-第40张图片-四季读书网

抱歉,评论功能暂时关闭!