2023年6月GESPC++一级真题解析

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

题目123456789101112131415
答案ACCDADDCCBBACBD
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 longlong) 、实数型 (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.在下列代码的横线处填写( ),使得输出是 “2010”
A.a+b
B.b
C.a-b
D.b-a
【答案】 C
【考纲知识点】基本运算(一级)
【解析】由于题目中没有分支、循环语句,可以尝试由结果反推。已知在第 8
  行,输出“ 2010 ”,因此此时 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分)

题目12345678910
答案
×
×
×
×
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 ,得到小时数之差对应的分
  钟数;
  利用结束时刻的分钟减开始时刻的分钟,得到分钟数之差;
  将将上述结果相加并输出;
【参考程序】

2.累计相加

【问题描述】
        输入一个正整数?,求形如:1+(1+2)+(1+2+3)+(1+2+3+4)+...···(1+2+3+4+5+...···+n)的累计相加。
【输入描述】
        输入一个正整数。约定1≤n≤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 的运算顺序等问题。
  如果不了解等差数列求和公式,也可以使用二重循环解题,需要更加注意循环条
  件的处理。
【参考程序】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值