2023 年GESP9 月认证 C++一级试卷解析
CCF 编程能力等级认证,英文名 Grade Examination of Software Programming(以下简称 GESP),由中国计算机学会发起并主办,是为青少年计算机和编程学习者提供学业能力验证的平台。GESP 覆盖中小学全学段,符合条件的青少年均可参加认证。GESP 旨在提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。
GESP 考察语言为图形化(Scratch)编程、Python 编程及 C++编程,主要考察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程能力,为后期专业化编程学习打下良好基础。
本次为大家带来的是 2023 年 9 月份 C++ 一级认证真题解析。
一、单选题(每题 2 分,共 30 分)
题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
答案 C D B C D B A C A C B B D D A
- 我们通常说的“内存”属于计算机中的( )。
A. 输出设备
B. 输⼊设备
C. 存储设备
D. 打印设备
【答案】C
【考纲知识点】 计算机基础知识
【解析】本题属于考察计算机基础知识中的存储设备问题;内存是一种存储设备,也可以考虑关联内存中的“存”字,选 C。
-
以下 C++不可以作为变量的名称的是( )。
A. redStar
B. RedStar
C. red_star
D. red star
【答案】D
【考纲知识点】 变量的定义与使用
【解析】本题属于变量命名规则问题。C++中的变量包括数字、字母和下划线。
D 选项中含有空格,因此选 D。 -
C++表达式 2 - 1 && 2 % 10 的值是( )。
A. 0
B. 1
C. 2
D. 3
【答案】B
【考纲知识点】 基本运算
【解析】本题考察运算符优先级,算数运算符包括:+,-,*,/,%,优先级大于 &&。 2-1 等于 1,2%10 等于 2,1&&2 等于 1,选 B。 -
下⾯C++代码段执⾏后的输出是( )。
A. 3+4= 7
B. 3+4=7
C. a+b=7
D. a+b=a+b
【答案】C
【考纲知识点】 变量的定义与使用、输入输出语句、基本运算
【解析】本题考察程序模拟,双引号和没有双引号。直接输出双引号里的内容,计算 a+b 的结果,然后输出。选 C。
-
在 C++语⾔中, int 类型的变量 x 、 y 、 z 的值分别为 2 、 4 、 6 ,以下表达式的值为真的是( )。
A. x > y || x > z
B. x != z - y
C. z > y + x
D. x < y || !x < z
【答案】D
【考纲知识点】 基本运算
【解析】本题考察算数运算符、比较运算符和逻辑运算符。比较运算符高于逻辑运算符,例如 A 选项,先计算 x>y 和 x>z,x>y 结果 0,x>z 结果是 0,0||0 的结果是 0,因此 A 的表达式值为 0。同理计算 BCD 选项,选 D。 -
对 int 类型的变量 a 、 b 、 c ,下列语句不符合 C++语法是( )。
A. c += 5;
B. b = c % 2.5;
C. a = (b = 3, c = 4, b + c);
D. a -= a = (b = 6) / (c = 2);
【答案】B
【考纲知识点】 基本运算
【解析】本题考察 C++的语法知识点。%运算符,操作数只能是整数,c%2.5 不符合语法规则,因此选 B。 -
下⾯C++代码执⾏后的输出是( )。
A. 都是偶数
B. 都是奇数
C. 不都是偶数或奇数
D. 以上说法都不正确
【答案】A
【考纲知识点】 选择结构、基本运算
【解析】本题考察程序模拟结果,考察 if 分支结构。14 和 12 都是偶数,对 2 取余结果都等于 0,因此 A 选项正确。
- 下⾯C++代码执⾏后的输出是( )。
A. 都是偶数
B. 都是奇数
C. 不都是偶数或奇数
D. 以上说法都不正确
【答案】C
【考纲知识点】 选择结构、基本运算
【解析】本题考察程序模拟结果,注意是考察的输出结果,输出结果不一定与事实相符。首先 14 和 12 都是偶数,14%2 的结果等于 0,12%2 也是一样,会进入第 2 个 if 判断,最终输出 C 选项。
- 下⾯C++代码执⾏后的输出是( )。
A. 0
B. 1
C. 2
D. 3
【答案】A
【考纲知识点】 选择结构、基本运算
【解析】本题考察程序模拟结果,考察 if 语句和除法运算。整数除以整数的答案还是整数,7/51,7/32,第 1 个 if 条件成立,输出 0,选 A。
- 下⾯C++代码段执⾏后的输出是( )。
A. 1
B. 4
C. 5
D. 10
【答案】C
【考纲知识点】 循环结构
【解析】本题考察 for 循环结构,循环执行了 5 次,cnt 增加了 5,答案选 C。
- 下⾯C++代码执⾏后的输出是( )。
A. 2
B. 4
C. 9
D. 10
【答案】B
【考纲知识点】 循环结构
【解析】本题考察 for 循环结构,循环执行了 i=1,i=3,共 2 次,注意 i+=2;cnt 增加了 1+3,答案选 B。
- 下⾯C++代码执⾏后的输出是( )。
A. 3
B. 4
C. 6
D. 7
【答案】B
【考纲知识点】 循环结构、基本运算
【解析】本题考察 while 循环结构,循环执行了 n=5,n=3,n=1 共 3 次, cnt 增加了 3,最开始 cnt=1,答案选 B。
- 下⾯C++代码⽤于求正整数的所有因数,即输出所有能整除⼀个正整数的数。如,输⼊10,则输出为 1、2、5、10;输⼊12,则输出为 1、2、3、4、6、12;输⼊17,则输出为 1、17。在横线处应填⼊代码是( )。
A. int i = 1; i < n; i + 1
B. int i = 1; i < n + 1; i + 1
C. int i = 1; i < n; i++
D. int i = 1; i < n + 1; i++
【答案】D
【考纲知识点】 循环结构、选择结构
【解析】本题考察 for 循环结构,求一个正整数的所有因子,1 和 n 是数字 n 的因子,循环的终止条件 i<=n,或者 i<n+1,B 和 D 选项符合。B 选项中 i+1,i 的值不能累加,会造成死循环,D 选项正确。
- 在下列代码的横线处填写( ),可以使得输出是正整数 1234 各位数字的平⽅和。
A. n / 10
B. (n / 10) * (n / 10)
C. n % 10
D. (n % 10) * (n % 10)
【答案】D
【考纲知识点】 循环结构、基本运算
【解析】本题考察 for 循环结构,求各位数字的平方和,BD 是求的平方和,D 选项可以分别求出各位上的数字,选 D。
- 执⾏以下 C++语⾔程序后,输出结果是( )。
A. 1
B. 0
C. 120
D. ⽆法确定
【答案】A
【考纲知识点】 循环结构、基本运算
【解析】本题考察 for 循环结构,循环推出条件 n 赋值为 0,循环不会执行,输出 s 原有值 1。选 A。
题号 1 2 3 4 5 6 7 8 9 10
答案 √ √ √ × √ × × × × √
二、判断题(每题 2 分,共 20 分)
-
早期计算机内存不够⼤,可以将字库固化在⼀个包含只读存储器的扩展卡中插⼊计算机主板帮助处理汉字。
【答案】正确
【考纲知识点】 计算机基础知识、计算机历史
【解析】本题计算机基础知识,计算机存储。 -
神威·太湖之光超级计算机是中国⾃主研制的超级计算机,在全球超级计算机
TOP500 排⾏榜中多次荣膺榜⾸。
【答案】正确
【考纲知识点】 计算机历史
【解析】本题计算机发展,超级计算机。 -
C++表达式 int(3.14) 的值为 3 。
【答案】正确
【考纲知识点】数据类型
【解析】本题 C++语言强制类型转换,将浮点型转换为整形,用 int()格式。 -
C++语句 cout<<(2,3,“23”) 的输出为 2,3,23 。
【答案】错误
【考纲知识点】 输入输出语句
【解析】本题考察 C++语言—逗号表达式,输出括号内最后一项内容。 -
C++的循环语句 for (int i = 0; i <10; i += 2) 表⽰ i 从 0 开始到 10 结束但不包含 10,间隔为 2。
【答案】正确
【考纲知识点】 循环结构
【解析】本题考察 C++循环知识,看 for 里面的条件,i 初始值是 0,每次增加 2, i 分别是 0,2,4,6,8,10,到 10 退出循环。 -
C++表达式 (‘1’ + ‘1’) 的值为 ‘2’ 。
【答案】错误
【考纲知识点】 基本数据类型、基本运算
【解析】本题考察 C++字符知识,字符相加是根据对应 ASCII 码值相加,‘1’的 ASCII
值是 49,‘2’的 ASCII 值是 50,输出是 49+49 对应的字符,不是 50。 -
在 C++语⾔中, do-while 循环不可能导致死循环,但 while 有可能。
【答案】错误
【考纲知识点】 循环结构
【解析】本题考察 C++循环知识,只要条件成立,都会导致死循环。 -
在下⾯的 C++代码中,由于循环中的 continue 是⽆条件被执⾏,因此将导致死循环。
【答案】错误
【考纲知识点】 循环结构
【解析】本题考察 C++循环知识,循环变量会增加,等于 10 的时候退出循环。
- 在 C++代码中,不可以将变量命名为 cout ,因为 cout 是 C++的关键字。
【答案】错误
【考纲知识点】 变量的定义和使用
【解析】本题考察 C++知识,cout 不是关键字,是一个类的对象。
- C++是⼀种⾼级程序设计语⾔。
【答案】正确
【考纲知识点】 计算机基础知识
【解析】本题考察 C++语言知识,c++是一门高级程序设计语言。
三、编程题(每题 25 分,共 50 分)
题号 1 2
答案
1、买⽂具问题描述
开学了,⼩明来到⽂具店选购⽂具。签字笔 2 元⼀⽀,他需要 X⽀;记事本 5 元
⼀本,他需要 Y 本;直尺 3 元⼀把,他需要 Z 把。⼩明⼿⾥有 Q 元钱。你通过编程帮⼩明算算,他⼿⾥的钱是否够买他需要的⽂具。
输入描述输⼊4⾏。
第⼀⾏包含⼀个正整数 X ,是⼩明购买签字笔的数量。约定 1≤X≤10 。
第⼆⾏包含⼀个正整数 Y ,是⼩明购买记事本的数量。约定 1≤Y≤10 。第三⾏包含⼀个正整数 Z ,是⼩明购买直尺的数量。约定 1≤Z≤10 。 第四⾏包含⼀个正整数 Q ,是⼩明⼿⾥的钱数(单位:元)。
输出描述
输出 2⾏。如果⼩明⼿⾥的钱够买他需要的⽂具,则第⼀⾏输出"Yes",第⼆⾏输出⼩明会剩下的钱数(单位:元); 否则,第⼀⾏输出"No",第⼆⾏输出⼩明缺少的钱数(单位:元)。
样例输入 1
样例输出 1
样例输入 2
样例输出 2
【题目大意】
- 已知买一个签字笔、记事本、直尺的价格,输入要买的数量和总钱数,问是否能够买到需要的数量。
【考纲知识点】 - 变量的定义与使用、选择结构、基本运算、输入输出语句。
【解题思路】 - 按题目要求定义好需要的变量,并实现输入;
- 根据单价求出购买这些数量的需要总钱数;
- 如果有的钱数大于等于需要的钱数,输出“Yes”和剩余的钱数;否则输出“No”
和缺少的钱数。
【参考程序】
2、⼩明的幸运数问题描述
所有个位数为 k 的正整数,以及所有 k 的倍数,都被⼩明称为“k 幸运数”。⼩明想知道正整数 L 和 R 之间(包括 L 和 R) 所有 k 幸运数的和,你能帮帮他吗?
输入描述
输⼊3⾏。第⼀⾏包含⼀个正整数 k,第⼆⾏包含⼀个正整数 L,第三⾏包含⼀个正整数 R。约定 2≤k≤9,1≤L≤R≤1000。
输出描述
输出 1⾏,符合题意的幸运数之和。样例输入 1
样例输出 1
样例解释 1
1 和 10 之间共有 1 个 7 幸运数:7。因为 7 既是 7 的倍数,个位数⼜为 7。因此,结果为 7。
样例输入 2
样例输出 2
样例解释 2
10 和 20 之间共有 2 个 7 幸运数:14 和 17。14 是 7 的倍数,17 的个位数为 7。因此,结果为 31。
【题目大意】
1.求 1-n 之间所有的数字是否是幸运数字。
【考纲知识点】
- 变量的定义与使用、控制语句结构、逻辑运算、算术运算、输入输出语句等。
【解题思路】 - 按题目要求定义好需要的变量,并实现输入;
- 判断每个数字是否是幸运数字,各位是 7 或者是 7 的倍数;
- 是的话就累加,最终输出汇总结果。
【参考程序】