
点击上方蓝字关注我们吧

CCF编程能力等级认证,英文名Grade Examination of Software Programming(以下简称GESP),由中国计算机学会发起并主办,是为青少年计算机和编程学习者提供学业能力验证的平台。GESP覆盖中小学全学段,符合条件的青少年均可参加认证。GESP旨在提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。
GESP考察语言为图形化编程、Python编程及C++编程,主要考察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程能力,为后期专业化编程学习打下良好基础。
本次为大家带来的是2024年3月认证C++一级真题解析。
GESP2024年3月认证C++一级
一、单选题(每题2分,共30分)

1、C++表达式(3 - 2) * 3 + 5 的值是( )。
A. -13
B. 8
C. 2
D. 0
【答案】:B
【解析】首先计算括号内的表达式3 - 2 得到1,然后乘以3得到3,最后加上5,得到结果8。
2、C++语句cout << "5%2=" << 5 % 2 执行后的输出是()。
A. 2 2
B. 1 1
C. 5%2=2
D. 5%2=1
【答案】:D
【解析】5 % 2 计算得到1,因此输出的字符串是5%2=1。
3、执行C++语句cin >> a 时如果输入5+2,下述说法正确的是()。
A.变量a将被赋值为整数7
B.变量a将被赋值为字符串,字符串内容为5+2
C.语句执行将报错,不能输入表达式
D.依赖于变量a的类型。如果没有定义,会有编译错误
【答案】:D
【解析】如果变量a是字符串类型,那么输入"5+2"将会被直接赋给变量a,此时变量a中的内容将是字符串"5+2"。如果变量a在代码中没有定义过,那么会导致编译错误,因为使用未定义的变量会引发编译器错误。因此,正确【答案】是取决于变量a的类型以及代码中是否定义了变量a。
4、下面C++代码执行后的输出是( )。

A. a+1= 2
B. a+1=2
C. 2=2
D. 2= 2
【答案】A
【解析】在这段代码中,<<左侧是一个字符串常量"a+1= ",右侧是表达式a+1,即变量a加上数字1。根据C++的输出规则,如果字符串和变量之间没有空格,则它们会直接连接在一起。所以,输出应该是"a+1= 2"。
5、下面C++代码执行后的输出是( )。

A. a+1= 2
B. a+1=2
C. 2=2
D. 2= 2
【答案】B
【解析】printf函数中,格式化字符串中的格式控制符%d用于表示将要插入的整数,而实际插入的整数为a+1,即2。因此,最终输出应该是"a+1=2",其中没有额外的空格。
6、下面C++代码执行时输入21后,有关描述正确的是( )。

A.代码第4行被执行
B.第4和第7行代码都被执行
C.仅有代码第7行被执行
D.第8行代码将被执行,因为input()输入为字符串
【答案】A
【解析】在输入为21时,21除以3的余数为0,因此条件N % 3 == 0 成立,执行第4行代码。由于满足了第一个条件,else if 和else语句块都不会执行,因此只有第4行代码被执行。
7、下面C++代码第2行,总共被执行次数是( )。

A. 10
B. 19
C. 20
D. 21
【答案】C
【解析】循环的初始条件是int i=-10,结束条件是i<10。循环变量i从-10开始逐渐增加,直到等于10时退出循环。因此,循环总共执行了20次,每次循环都会执行第2行代码,所以第2行总共被执行的次数是20次。
8、下面C++代码执行后的输出是( )。

A. 0
B. 7
C. 18
D. 20
【答案】D
【解析】i%3表示变量i除以3的余数,如果i不能被3整除,即i%3的结果不为0,则条件为真。
同样地,i%7表示变量i除以7的余数,如果i不能被7整除,即i%7的结果不为0,则条件也为真。因此,if(i%3 && i%7) 表示当i既不能被3整除也不能被7整除时,整个条件为真。因此,满足条件的数字是1、2、4、5、8,它们的总和是1 + 2 + 4 + 5 + 8 = 20。
9、下面C++代码执行后的输出是( )。

A. 9#6#3#
B. 9#6#3#0#
C. 8#7#5#4#2#1#
D. 10#8#7#5#4#2#1#
【答案】B
【解析】开始时,N的初始值是10。在循环中,N每次减去1,然后检查新的N是否能被3整除。如果能被3整除,则输出N的值,后面跟着一个"#"符号,结果为9#6#3#0#。
10、下面C++代码用于判断键盘输入的整数是否为质数。质数是只能被1和它本身整除的数。在横线处应填入代码是( )。

A. N % i
B. N % i == 0
C. N / i == 0
D. N / i
【答案】B
【解析】在横线处填入代码,以判断键盘输入的整数是否为质数,应该选择选项B. N % i == 0。
这是因为质数是只能被1和它本身整除的数。因此,我们需要判断键盘输入的整数N能否被i整除,即N % i == 0。如果整除次数cnt等于2,说明N能被1和它本身整除,即为质数。
11、下面关于整型变量int x的赋值语句不正确是( )。
A. x=(3.16);
B. x=3.16;
C. x=int(3.16);
D. x=3.16 int;
【答案】D
【解析】在C++中,整型变量赋值语句应该是合法的整数值。选项A中,(3.16)被解释为一个表达式,赋值结果是3,因为类型转换会丢弃小数部分。选项B中,3.16是一个浮点数值,但可以隐式转换为整数类型,因为x是一个整型变量,所以这个赋值是合法的。选项C使用了显式的类型转换,将3.16转换为整数类型。而选项D中的int应该出现在变量名之前而不是赋值操作符之后,因此是错误的。
12、C++语言中下面可以完成数据输入的语句是( )。
A. printf语句
B. scanf语句
C. default语句
D. cout语句
【答案】B
【解析】scanf语句用于从标准输入流(通常是键盘)读取数据。
13、在Dev C++中对一个写好的C++源文件要生成一个可执行程序需要执行下面哪个处理步骤?( )
A.创建
B.编辑
C.编译
D.调试
【答案】C
【解析】在Dev C++ 中,要生成一个可执行程序,需要进行编译。编译过程将源代码转换为机器可执行的目标代码。其他选项的含义如下:
A.创建:创建新的源文件或项目;B.编辑:编辑源文件,修改其中的内容;D.调试:对程序进行调试,发现和修复其中的错误。
14、小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?( )
A.小程序
B.计时器
C.操作系统
D.神话人物
【答案】C
【解析】鸿蒙(HarmonyOS)是华为推出的分布式操作系统。它被设计用于多种设备,包括智能手机、智能手表、智能电视、智能家居设备等。因此,在小杨父母给他买的华为手表上跑的是鸿蒙操作系统。
15、中国计算机学会(CCF)在2024年1月27日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是( )。
A.制造自动驾驶汽车
B.创立培训学校
C.发明汉字激光照排系统
D.成立方正公司
【答案】C
【解析】王选先生的重大贡献是发明了汉字激光照排系统,这一技术在印刷、出版领域产生了巨大影响,为中国的印刷业现代化做出了重要贡献。
二、判断题(每题2分,共20分)
|
题号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
答案 |
√ |
√ |
× |
√ |
× |
× |
× |
√ |
√ |
√ |
1、在C++代码中变量n被赋值为27,则 cout << n%10 执行后输出的是7。( )
【答案】正确
【解析】C++中取余运算符%返回除法的余数。因此,27除以10的余数为7,因此输出为7。
2、C++语句printf("%d#%d&",2,3)执行后输出的是2#3&。( )
【答案】正确
【解析】在C++中,printf函数是用于格式化输出的,%d用于指定输出整数,#和&是普通字符,会直接输出。因此,printf("%d#%d&", 2, 3) 将输出2#3&。
3、C++函数scanf()必须含有参数,且其参数为字符串型字面量,其功能是提示输入。( )
【答案】错误
【解析】在C++中,scanf()函数并不一定需要含有参数。scanf()函数的参数是可选的,可以根据需要选择是否传递参数。此外,scanf()函数的参数通常是格式控制字符串,指定要读取的输入类型和格式,而不是用于提示输入的字符串。因此,该函数的功能是读取输入,而不是提供提示。
4、C++表达式"10"*2执行时将报错,因为"10"是字符串类型而2是整数类型,它们数据类型不同,不能在一 起运算。( )
【答案】正确
【解析】在C++中,字符串和整数之间的乘法运算是非法的。因此,表达式"10"*2将导致编译错误,因为无法对字符串类型和整数类型进行乘法运算。
5、在C++中,while可能是死循环,而for循环不可能是死循环。( )
【答案】错误
【解析】在C++中,无论是while循环还是for循环都有可能成为死循环,这取决于循环条件的设置以及循环体内部的逻辑。死循环的出现通常是由于循环条件设置不当或循环体内部的逻辑错误导致的,而不是循环类型本身决定的。因此,while循环和for循环都有可能成为死循环。
6、在C++,break语句用于提前终止当前层次循环,适用于while循环,但不适用于for循环。( )
【答案】错误
【解析】在C++中,break语句用于提前终止当前层次的循环,不论是while循环还是for循环都可以使用break语句。break语句的作用是在循环体内部遇到某个条件时立即终止循环的执行,而不管是哪种类型的循环。因此,break语句既适用于while循环,也适用于for循环。
7、C++语言中3.0和3的值相等,所以它们占用的存储空间也相同。( )
【答案】错误
【解析】在C++中,3.0和3在值上是相等的,但它们的数据类型不同。3是整数类型,而3.0是浮点数类型。整数和浮点数在内存中占用的存储空间通常是不同的,因为它们的表示方式和精度要求不同。
8、在C++的程序中,cin是一个合法的变量名。( )
【答案】正确
【解析】在C++中,cin是C++标准库中预定义的输入流对象,用于从标准输入设备(通常是键盘)读取数据。但在不同的作用域内可以作为有效地标识符,因此,cin能作为变量名在程序中定义。
9、小杨今年春节回奶奶家了,奶奶家的数字电视可以通过遥控器输入电视剧名称来找到想播放的电视剧,所以 可以推知里面有交互式程序在运行。( )
【答案】正确
【解析】用户可以通过遥控器与数字电视进行交互。
10、任何一个for循环都可以转化为等价的while循环(
)。
【答案】正确
【解析】任何一个for循环都可以转化为等价的while循环,反之亦然。这是因为for循环和while循环都属于基本循环结构,可以实现相同的功能,只是语法不同。
三、编程题(每题25分,共50分)
|
题号 |
1 |
2 |
|
答案 |
小杨买书
题面描述
小杨同学积攒了一部分零用钱想要用来购买书籍,已知一本书的单价是13元,请根据小杨零用钱的金额,编写程序
计算最多可以购买多少本书,还剩多少零用钱。
输入格式
输入一个正整数 ,表示小杨拥有的零用钱数。
输出格式
输出包含两行,第一行,购买图书的本书,第二行剩余的零用钱数。
样例1

样例2

对于全部数据,保证有0<m<200
【解题思路】
程序中的除法运算m / 13 计算可以购买的书籍数量,而取余运算m % 13 计算购买完书籍后剩余的零用钱金额。
【参考程序】

2、找因数
问题描述
小A最近刚刚学习了因数的概念,具体来说,如果一个正整数a可以被另一个正整数b整除,那么我们就说b是a的因数。
请你帮忙写一个程序,从小到大输出正整数a的所有因数。
输入格式
输入一行一个正整数a。保证a≤ 1,000。
输出格式
输出若干行,为a的所有约数,从小到大排列。
特别提醒
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
样例输入1

样例输出1

样例输入2

样例输出2

样例输入3

样例输出3

【解题思路】
用户输入一个整数a,程序读取并存储在变量a 中。然后,程序使用for 循环遍历从1 到a 的所有整数。在循环中,对于每个数i,程序使用取余运算a % i 来判断是否为a 的因数。如果a % i 等于0,则表示i 是a 的因数,程序将其输出到屏幕上。这样,程序就能够找出a 的所有因数并输出。
【参考程序】

技术支持:郝利斌
策划:GESP技术委员会副主席 刘晓庆




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

