02 202306计算机学会GESP一级

标签:
普通解析文字版答案
2024-11-22
| 16页
| 183人阅读
| 1人下载

内容正文:

2023 年 6 月 GESP C++ 一级真题解析 CCF 编 程 能 力 等 级 认 证 , 英 文 名 Grade Examination of Software Programming(以下简称 GESP),由中国计算机学会发起并主办,是为青少年计 算机和编程学习者提供学业能力验证的平台。GESP 覆盖中小学全学段,符合条 件的青少年均可参加认证。GESP 旨在提升青少年计算机和编程教育水平,推广 和普及青少年计算机和编程教育。 GESP 考察语言为图形化(Scratch)编程、Python 编程及 C++编程,主要考 察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过 设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程 能力,为后期专业化编程学习打下良好基础。 本次为大家带来的是 2023年 6 月份,C++ 一级考试真题解析。 一、单选题(每题 2 分,共 30 分) 1. 以下不属于计算机输出设备的有( )。 A. 麦克风 B. 音箱 C. 打印机 D. 显示器 【答案】A 【考纲知识点】计算机基础(一级) 【解析】本题属于考察计算机基础知识中的“输入”和“输出”概念;“输入”指外界 向机器内部传递信息,“输出”指计算机内部信息向外界展示信息。此题中,“麦 克风”属于向内部输入声音,属于输入概念,所以本题正确答案为 A。 2. ChatGPT 是 OpenAI 研发的聊天机器人程序,它能通过理解和学习人类的语言 来进行对话,还能根据聊天的上下文进行互动,完成很多工作。请你猜猜看,下 面任务中,ChatGPT不能完成的是( )。 A. 改邮件 B. 编剧本 C. 擦地板 D. 写代码 【答案】C 【考纲知识点】计算机基础(一级) 【解析】本题属于考察计算机在现代社会中的常见应用;ChatGPT 聊天机器人程 序可以帮助我们完成一些计算机上的操作,A、B、D都属于这个范畴,C 选项擦 地板无法直接实现。所以本题正确答案为 C。 3. 常量'3'的数据类型是( )。 A. double B. float C. char D. int 【答案】C 【考纲知识点】基本数据类型(一级) 【解析】本题属于考察 C++中的基本数据类型;C++中的基本数据类型有:整数 型(int、long long)、实数型(float、double)、字符型(char)、布尔型(bool)。本题中 '3'是用单引号引起来的单个字符 3 ,属于字符型 char,所以本题正确答案为 C。 4. 下列关于 C++语言变量的叙述,正确的是( )。 A. 变量可以没有定义 B. 对一个没有定义的变量赋值,相当于定义了一个新变量 C. 执行赋值语句后,变量的类型可能会变化 D. 执行赋值语句后,变量的值可能不会变化 【答案】D 【考纲知识点】变量的定义与使用(一级) 【解析】本题属于考察 C++程序的基本概念中的“变量”相关概念;A、B 选项错误 都在于,变量需要“先定义,再使用”,没有定义过的变量无法直接“赋值”,故排 除 A、B。C选项错误在于,赋值操作不会改变变量数据类型,故排除 C 选项。 如果赋值语句右侧的表达式计算结果与左侧的变量原值相同,则执行赋值语句后 变量的值不会变化,所以本题正确答案为 D。 5. 以下可以作为 C++标识符的是( )。 A. number_of_Chinese_people_in_millions B. 360AntiVirus C. Man&Woman D. break 【答案】A 【考纲知识点】变量的定义与使用(一级) 【解析】在计算机编程语言中,“标识符”是用户编程时使用的名字,用于给变量、 常量、函数等命名;C++中声明变量名时,变量名中能且只能包含字母、数字、 下划线,且不能用数字开头。另外,C++中有一些关键字(如 if、while、break 等)这些关键字已被编程语言保留,不能用作标识符。选项中 B、C、D 均不满 足要求,所以本题正确答案为 A。 6. 以下哪个不是 C++语言的关键字?( ) A. double B. else C. while D. endl 【答案】D 【考纲知识点】计算机基础与编程环境(一级) 【解析】本题考察对 C++关键字的认识;C++的关键字如下图所示: 所以本题正确答案为 D。 7. 如果 a、b和 c 都是 int 类型的变量,下列哪个语句不符合 C++语法?( ) A. a = (b == c); B. b = 5.5; C. c = a + b + c; D. a + c = b + c; 【答案】D 【考纲知识点】基本运算(一级) 【解析】本题属于考察 C++中的基本运算;首先要了解赋值运算符的使用规则, 将符号右边的值赋值给符号左边的“变量”。A 选项,符号右边是一个关系运算, 运算结果是布尔类型,true或者 false,对应的值是 1 或者 0,可以直接赋值给整 型变量,正确。B选项,实数类型的值可以赋值给 int类型,结果只取整数部分, 正确。C选项,符合要求,正确。D 选项,赋值运算符左边是一个“算术运算”, 而不是一个“变量”,所以本题正确答案为 D。 8. 如果用一个 int类型的变量 a 表达正方形的边长,则下列哪个表达式不能用来 计算正方形的面积?( ) A. a * a B. 1 * a * a C. a ^ 2 D. a * 2 * a / 2 【答案】C 【考纲知识点】基本运算(一级) 【解析】本题属于考察 C++的基本运算中的位运算;边长为 a的正方形的面积是 a*a,A、B、D的运算结果均正确。C选项错误在于,^符号在一些其他语言中表 示乘方运算,但在 C++中表示“异或运算符”,会将符号两边的值按二进制位进行 异或运算,不满足要求,所以本题正确答案为 C。 9. 表达式(4 * (11 + 12) / 4)的计算结果为( )。 A. 47 B. 20 C. 23 D. 56 【答案】C 【考纲知识点】基本运算(一级) 【解析】本题属于考察 C++的基本运算中的运算优先级;小括号 ():优先级最高, 括号内的计算最先进行,再按从左往右的顺序进行乘除法计算。所以本题正确答 案为 C。 10. 如果 a为 int类型的变量,且 a的值为 6,则执行 a %= 4;之后,a的值会是( )。 A. 1 B. 2 C. 3 D. 4 【答案】B 【考纲知识点】基本运算(一级) 【解析】本题属于考察 C++的基本运算中的赋值运算;首先需要了解复合赋值运 算符"%="的规则,a%=4 等价于 a=a%4,即先进行求余运算,再将得到的结果赋 值给符号左边的变量。6除以 4 的余数为 2,所以本题正确答案为 B。 11. 如果 a 和 b 均为 int类型的变量,下列表达式能正确判断“a 等于 0 且 b等于 0”的是( )。 A. (a == b == 0) B. !(a || b) C. (a + b == 0) D. (a == 0) + (b == 0) 【答案】B 【考纲知识点】基本运算(一级) 【解析】本题属于考察 C++的基本运算中的逻辑运算; A选项会先判断 a 和 b 是否相等,只有 a 和 b不相等,a==b 表达式的值才为 0, 所以 A选项判断是 a 不等于 b。 B 选项中,若!(a || b)为真,则(a||b)结果为 0,若 a 和 b 有任意一个不为 0,(a||b) 的值都为 1,所以当 a 等于 0 且 b 等于 0时,(a || b)的结果才为 0,!(a||b)的值 才为 1。 C选项判断的是 a+b的和是否为 0,当 a 和 b互为相反数时条件即可成立,a 和 b 不一定为 0。 D选项判断的时表达式(a==0)和表达式(b==0)的和,只要 a和 b中有任意一个为 0, 最终表达式的值都大于 0,即为真。 所以本题正确答案为 B。 12. 如果 a 和 b 为 int 类型的变量,且值分别为 7 和 2,则下列哪个表达式的计 算结果不是 3.5?( ) A. 0.0 + a / b B. (a + 0.0) / b C. (0.0 + a) / b D. a / (0.0 + b) 【答案】A 【考纲知识点】基本运算(一级) 【解析】本题属于考察 C++的基本运算中的实数算数运算。B、C、D选项中,小 括号里的运算结果数据类型是“实数型”,与整数进行除法运算,结果依旧是实数, 可以得到 3.5,正确。A 选项错误在于,除法运算优先级高于加法运算,两个整 数 7和 2 相除的结果是整数 3,再加上实数 0.0,得到的结果是 3.0,不满足要求, 所以本题正确答案为 A。 13. 在下列代码的横线处填写( ),使得输出是“20 10”。 A. a + b B. b C. a - b D. b - a 【答案】C 【考纲知识点】基本运算(一级) 【解析】由于题目中没有分支、循环语句,可以尝试由结果反推。已知在第 8 行,输出“20 10”,因此此时 a 为 20、b为 10。第 7 行对 a 赋值后得到的就是 第 8行时 a 的值 20,而且 b的值不变,可知第 7 行语句执行前 a、b分别为-10、 10。同理,第 6行对 b 赋值后得到的就是第 8 行时 b的值 10,而且 a 的值不变, 可知第 6行语句执行前 a、b 分别为-10、20。于是,第 5 行语句对 a 赋值后,a 的值应变为-10。第 5行语句执行前,a 为 10、b为 20,四个选项中,只有选项 C的表达式的计算结果为-10。所以本题正确答案为 C。 14. 在下列代码的横线处填写( ),可以使得输出是“147”。 A. i % 2 == 1 B. i % 3 == 1 C. i = i + 3 D. i + 3 【答案】B 【考纲知识点】循环结构、基本运算(一级) 【解析】本题主要考察 for循环中变量的取值,与求余运算符的使用;可以使用 代入法进行排除。 A选项中,只有 i 为奇数,才会输出,输出结果为 1357,不满足题目要求。 B 选项带入,1,4,7 除以 4 的刚好余 1,输出结果为 147,满足题目要求。 C选项为赋值表达式,表达式的值为真,输出结果为 48,不满足要求。 D选项只要 i+3 的值不为 0表达式都成立,输出结果为 12345678,不满足要求 所以本题正确答案为 B。 15. 执行以下 C++语言程序后,输出结果是( )。 A. 63 B. 98 C. 113 D. 无法确定 【答案】D 【考纲知识点】变量的定义与使用(一级) 【解析】本题主要考察 C++程序基本概念中的变量定义规则,本题中,变量 sum 的作用是累加求和,定义在主函数内,但是并没有进行初始化,无法保证其初始 值为 0,故运行结果无法确定,所以本题正确答案为 D。 二、判断题(每题 2 分,共 20 分) 1. 计算机硬件主要包括运算器、控制器、存储器、输入设备和输出设备。 【答案】√ 【考纲知识点】计算机基础(一级) 【解析】本题考察计算机基础知识中的计算机组成五大部分;分别是:存储器、 控制器、运算器、输入设备和输出设备,所以本题正确。 2. 诞生于 1958 年的 103 机是中国第一台通用数字电子计算机,比 1946 年在美 国诞生的第一台通用电子计算机 ENIAC 晚了十多年。 【答案】√ 【考纲知识点】计算机的历史(一级) 【解析】本题属于对计算机历史的考察;中国第一台通用数字电子计算机于 1958 年 8月研制成功,美国第一台通用电子计算机 ENIAC 诞生于 1946年 2 月 14日。 所以本题正确。 3. 在 C++语言中,计算结果必须存储在变量中才能输出。 【答案】× 【考纲知识点】输入输出语句(一级) 【解析】本题考察计算机基本语言中的输出语句;输出语句可以直接输出表达式, 输出的内容是表达式运算结果。所以本题错误。 4. 在 C++语言中,标识符的命名不能完全由数字组成,至少有一个字母就可以。 【答案】× 【考纲知识点】变量的定义与使用(一级) 【解析】本题考察 C++语言中标识符的命名规则;C++语言中,标识符的命名能 且只能包含字母、数字、下划线,且不能用数字开头。可以没有字母,例如_123 是合理的标识符;有字母也可能不能作为标识符,例如 2ab不是合理的标识符。 所以本题错误。 5. 10 是一个 int类型常量。 【答案】√ 【考纲知识点】基本数据类型(一级) 【解析】本题考察 C++语言中常量的概念;常量是固定值,在程序执行期间不会 改变,可以是任何的基本数据类型,10是一个整型常量,默认类型为 int类型。 所以本题正确。 6. if 语句可以没有 else子句。 【答案】√ 【考纲知识点】选择结构(一级) 【解析】本题考察 C++中分支结构中的 if 语句,if...else...语句的区别;if...else... 语句中,当 if语句条件不满足,会执行 else中的语句;if 语句可以独立存在,条 件满足,执行下级代码,条件不满足,跳过下级代码继续执行。所以本题正确。 7. do ... while语句的循环体至少会执行一次。 【答案】√ 【考纲知识点】循环结构(一级) 【解析】本题主要考察 C++中的 do...while 语句执行逻辑;do...while会先执行一 次循环体,然后再判别表达式。当表达式结果为“真”时,返回重新执行循环体, 如此反复,直到表达式结果为“假”为止,此时循环结束。所以本题正确。 8. 如果 a 和 b为 int类型的变量,则表达式 a = b 可以判断 a和 b 是否相等。 【答案】× 【考纲知识点】基本运算(一级) 【解析】本题考察 C++基本运算中关系运算符的使用;C++中,判断相等需要使 用两个等于号( == ),一个等于号( = )是赋值符号。所以本题错误。 9. 如果 a 为 int类型的变量,则表达式(a % 4 == 2)可以判断 a 的值是否为偶数。 【答案】× 【考纲知识点】基本运算(一级) 【解析】本题主要考察 C++基本运算中的求余运算,与偶数判断;偶数是指在整 数中能被 2整除的数。题中表达式表达“被 4 除余 2”,这样的数一定是偶数, 但偶数不一定满足该条件。例如,4是偶数,被 4 除余 0。所以本题错误。 10. 表达式(37 / 4)的计算结果为 9,且结果类型为 int。 【答案】√ 【考纲知识点】基本运算(一级) 【解析】本题主要考察 C++基本运算中的整数除法运算;在 C++语言中,除号/ 左右均为整数类型时,表示整数除法,运算结果向下取整(舍弃小数部分),且 结果为整数类型。所以本题正确。 三、编程题(每题 25 分,共 50 分) 1. 时间规划 【问题描述】 小明在为自己规划学习时间。现在他想知道两个时刻之间有多少分钟,你能 通过编程帮他做到吗? 【输入描述】 输入 4行,第一行为开始时刻的小时,第二行为开始时刻的分钟,第三行为 结束时刻的小时,第四行为结束时刻的分钟。 输入保证两个时刻是同一天,开始时刻一定在结束时刻之前。时刻使用 24 小时制,即小时在 0到 23 之间,分钟在 0到 59 之间。 【输出描述】 输出一行,包含一个整数,从开始时刻到结束时刻之间有多少分钟。 【样例输入 1】 9 5 9 6 【样例输出 1】 1 【样例输入 2】 9 5 10 0 【样例输出 2】 55 【题目大意】时间转换问题,输入开始时刻和结束时刻,时刻使用 24小时制, 保证两个时刻是同一天,且开始时刻一定在结束时刻之前,计算两者中间的时间, 转化为分钟进行输出。 【考纲知识点】变量的定义与使用、顺序结构、基本运算、输入输出语句(一级) 【解题思路】 按题目要求定义好需要的变量,并实现输入; 利用结束时刻的小时减开始时刻的小时,结果乘 60,得到小时数之差对应的分 钟数; 利用结束时刻的分钟减开始时刻的分钟,得到分钟数之差; 将将上述结果相加并输出; 【参考程序】 #include <iostream> using namespace std; int main() { int h1, h2, m1, m2; // 定义需要的变量 cin >> h1 >> m1; // 输入开始时刻的小时 h1,开始时刻的分钟 m1 cin >> h2 >> m2; // 输入结束时刻的小时 h2,结束时刻的分钟 m2 cout << (h2 - h1) * 60 + (m2 - m1); // 计算并输出结果 return 0; } 2. 累计相加 【问题描述】 输入一个正整数�,求形如:1 + 1 + 2 + 1 + 2 + 3 + 1 + 2 + 3 + 4 + …⋯(1 + 2 + 3 + 4 + 5 + …⋯�)的累计相加。 【输入描述】 输入一个正整数。约定 1 ≤ � ≤ 100。 【输出描述】 输出累计相加的结果。 【样例输入 1】 3 【样例输出 1】 10 【样例输入 2】 4 【样例输出 2】 20 【样例输入 3】 10 【样例输出 3】 220 【题目大意】多项式求和问题,多项式的每一项,都是从 1开始,累加到当前项 数结束。累加每项之和求出整个多项式的和。 【考纲知识点】循环结构、基本运算、输入输出语句(一级) 【解题思路】 1. 分析出参与求和运算的每一项的规律:第 1项为 1,第 2 项从 1开始加到 2, 第 3项从 1 开始加到 3,依次类推,第 i 项从 1开始一直加到当前项数 i,利用求 和公式可以表示为(i+1)*i/2; 2. 借助 for循环,把每个多项式的结果累加到 sum中; 3. 按要求完成输入和输出。 解题过程中应注意变量 sum初始化,循环条件 i <= n是否包含等于情况,表达式 (i+1)*i/2的运算顺序等问题。 如果不了解等差数列求和公式,也可以使用二重循环解题,需要更加注意循环条 件的处理。 【参考程序】 #include <iostream> using namespace std; int main() { int n; cin >> n; int sum = 0; // 定义计数变量 sum 初始化为 0,用于累加求和 for (int i = 1; i <= n; i++) // 遍历每一项,i表示当前项数 sum += (i + 1) * i / 2; // 把每个多项式的值累加到 sum中求和 cout << sum << endl; // 输出结果 return 0; }

资源预览图

02  202306计算机学会GESP一级
1
02  202306计算机学会GESP一级
2
02  202306计算机学会GESP一级
3
02  202306计算机学会GESP一级
4
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。