2023年3月GESP C++ 一级真题解析

2023年3月GESP C++ 一级试卷解析

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

1.以下不属于计算机输入设备的有( )。

A.键盘

B.音箱

C.鼠标

D.传感器

【答案】B

【考纲知识点】计算机基础(一级)

【解析】本题属于考察计算机基础知识中的“输入”和“输出”概念;“输入”指外界向机器内部传递信息,“输出”指计算机内部信息向外界展示。此题中,“音箱”属于向外部播放声音,故属于输出概念,所以本题正确答案为B。

2.计算机系统中存储的基本单位用B来表示,它代表的是( )。

A.Byte

B.Block

C.Bulk

D.Bit

【答案】A

【考纲知识点】计算机基础(一级)

【解析】本题属于考察计算机基础知识中,关于存储的基本单位;计算机中,表示存储大小的最小单位为“字节”,英文为“Byte”,表示一个字节存储空间大小的单位,用大写字母B表示,所以本题正确答案为A。

3.常量7.0的数据类型是()。

A. double

B. float

C. void

D. int

【答案】A

【考纲知识点】基本数据类型(一级)

【解析】本题考察考生对于C++基本数据类型的了解:关于基本数据类型,有整型int,浮点型double、float,字符型char,布尔型bool,本题中7.0是小数形式,属于浮点型,C++中浮点型默认是double,所以本题正确答案为A。

4.下列关于C++语言的叙述,不正确的是()。

A.变量定义时可以不初始化

B.变量被赋值之后的类型不变

C.变量没有定义也能够使用

D.变量名必须是合法的标识符

【答案】C

【考纲知识点】变量的定义与使用(一级)

【解析】本题考察C++语言中变量的定义与使用;关于变量的定义与使用,变量在定义时可以不初始化,变量名必须是合法的标识符,并且变量被赋值之后的类型不变,均不符合题意,故A、B、D排除;选项C变量必须定义才能使用,没有定义变量就使用会造成编译错误,所以本题正确答案为C。

5.以下不可以作为C++标识符的是()。

A. x321

B. 0x321

C. x321_

D. _x321

【答案】B

【考纲知识点】变量的定义与使用(一级)

【解析】本题查C++语言中变量的定义与使用;根据变量的命名规则:1.只能包含大小写字母、数字、下划线;2.必须以大小写字母或者下划线开头;3.不能使用C++的指令或关键字。选项B为0x321,以数字开头,违反变量的命名规则,所以本题正确答案为B。

6.以下哪个不是C++语言的关键字?

A. int

B. for

C. do

D. cout

【答案】D

【考纲知识点】计算机基础与编程环境(一级)

【解析】本题考察输入输出语句及变量的定义与使用两部分内容;输入输出的cin和cout都是C++的常用内置对象,而但不是关键字。C++的关键字如下图所示:

图片


 

所以本题正确答案为D。

7.如果a、b和c都是int类型的变量,下列哪个语句不符合C++语法?

A. c = a + b;

B. c += a + b;

C. c = a = b;

D. c = a ++ b;

【答案】D

【考纲知识点】基本运算(一级)

【解析】本题属于考察C++基本运算中的算术运算;选项A是将a加b的和赋值给c;选项B等价于c=c+(a+b),将a和b的值相加,再加上c的值之后,赋给c;选项C是将b赋给a,再将a赋给c;选项D中++是自增运算符,a++表示的是a在原本的值上自增1,后面跟上b不符合C++语法,所以本题正确答案为D。

8.如果用两个int类型的变量a和b分别表达长方形的长和宽,则下列哪个表达式不能用来计算长方形的周长?

A. a + b * 2

B. 2 * a + 2 * b

C. a + b + a + b

D. b + a * 2 + b

【答案】A

【考纲知识点】基本运算(一级)

【解析】本题主要考察基本运算中的算术运算;长方形的周长公式是(长+宽)*2或者长*2+宽*2或四条边相加;选项A根据运算规则,先算乘法b*2,后算加法a+b*2,不能用来计算长方形的周长,所以本题正确答案为A。

9.表达式((3 == 0) + 'A' + 1 + 3.0)的结果类型为()。

A. double

B. int

C. char

D. bool

【答案】A

【考纲知识点】基本运算(一级)

【解析】本题考察C++基本运算过程中的隐式类型转换;算式中,(3==0)的计算结果为bool类型、’A’为char类型常量、1为int类型常量、3.0为double类型常量算式从左往右进行运算,3==0是逻辑运算,3不等于0,所以3==0结果为假,即为0;‘A’是字符,对应ASCII码是65;即式子变为0+65+1+3.0,int类型和double类型运算,将它们相加时会先从低精度的高精度的进行类型转换,最终结果为double类型,所以本题正确答案为A。

10.如果a为int类型的变量,且a的值为6,则执行a *= 3;之后,a的值会是()。

A. 3

B. 6

C. 9

D. 18

【答案】D

【考纲知识点】基本运算(一级)

【解析】本题考察C++基本运算;a*=3相当于a=a*3,a的值一开始是6,所以6*3=18,将这个结果再赋给a,a的值变为18,所以本题正确答案为D。

11.如果a和b均为int类型的变量,下列表达式不能正确判断“a等于0且b等于0”的是()

A. (a == 0) && (b == 0)

B. (a == b == 0)

C. (!a) && (!b)

D. (a == 0) + (b == 0) == 2

【答案】B

【考纲知识点】基本运算(一级)

【解析】本题主要考察C++基本运算中的逻辑运算;

选项A条件1是a==0,条件2是b==0,两个条件之间用逻辑与&&,两个条件都满足,整个条件就满足,符合a等于0且b等于0;

选项B是先判断a和b是否相等,若相等表达式a==b的值为1,若不相等a==b的值为0,再判断表达式a==b的值是否等于0,只有a和b不相等时,整个表达式成立;。

选项C条件1是!a,a为0时,!a为1,条件成立,条件2是!b,b为0时,!b为1,条件成立,两个条件之间是逻辑与&&关系,两个条件都满足,整个条件就满足,符合a等于0且b等于0;

选项D中a==0条件满足为1,b==0条件满足也为1,两个都满足相加结果为2,两个条件有任意不满足则相加结果可能为0或1。因此,判断相加结果是否等于和2比较是相等的,符合a等于0且b等于0;

所以本题正确答案为B。

12.如果a为int类型的变量,下列哪个表达式可以正确求出满足“大于等于a且是4的倍数”的整数中最小的?

A. a * 4

B. a / 4 * 4

C. (a + 3) / 4 * 4

D. a - a % 4 + 4

【答案】C

【考纲知识点】基本运算(一级)

【解析】本题考察C++基本运算中的算术运算;

选项A,假设a为3,a*4即为3*4=12,12虽然满足大于等于a且是4的倍数,但不是满足条件的整数中最小的,排除A;

选项B,假设a为3,a/3结果为0,因为a为int类型,int类型进行计算,结果还是int,会把小数部分舍去,故a/3*4结果为0,不满足条件,排除B;

选项C,假设令a=4k+t为3,k是一个整数,0<=t<=3,则(a+3)/4=(4k+t+3)/4=k+(t+3)/46。如果a是4的倍数,则t=0, 6/4=1,1*4=4, (a+3)/4*4=k*4=a,等于a且是4的倍数;否则t>=1,(4k+4)/4*4 <= (a+3) /4*4 <= (4k+6)/4*4,即(4k+4) <=  (a+3) /4*4 <= (4k+4),结果为4k+4,大于等于a且是4的倍数的整数中最小的,满足题意;

选项D,假设a为4,4%4=0,a-a%4+4=8,8虽然满足大于等于a且是4的倍数,但不是满足条件的整数中最小的,排除D;

所以本题正确答案为C。

  1. 在下列代码的横线处填写(),可以使得输出是“20 10”。

图片

A. a + b

B. (a + b) * 100

C. b * 100 + a

D. a * 100 + b

【答案】D

【考纲知识点】控制语句、基本运算(一级)

【解析】本题主要考察控制语句结构和基本运算。由于题目中没有分支、循环语句,可以尝试由结果反推。已知在第8行,输出“20 10”,因此此时a为20、b为10。第7行对a赋值后得到的就是第8行时a的值20,可知第7行语句执行前a除以100的余数为20。由于第7行未改变b的值,第6行对b赋值后得到的就是第8行时b的值10,可知第6行语句执行前a除以100的商为10。由于第6行未改变a的值,综合第7行得到的线索,可知第6行语句执行前,a应为1020。第5行语句执行前,a为10、b为20,四个选项中,只有选项D的表达式的计算结果为1020。a一开始是10,然后经过操作,再让a对100取余,得到的结果是20,那就说明a的后两位是20;b一开始是20,经过操作,b等于a除以100,也就是把a的后两位删掉,剩下的结果是10,那就说明5行代码处的a应该是1020,先让a乘100,由10变成1000,再加b,变为1020,所以本题正确答案为D。

14.在下列代码的横线处填写(),可以使得输出是“1248”。

图片

A. i++

B. i *= 2

C. i += 2

D. i * 2

【答案】B

【考纲知识点】控制语句结构(一级)

【解析】本题考察控制语句结构中的循环结构。变量i的初始值是1,循环条件是i小于等于8,循环范围是从1到8,循环体中输出i,得到的输出是1248,规律是在前一个的基础上乘2,每次i*2之后赋给i,所以本题正确答案为B。

15.执行以下C++语言程序后,输出结果是()。

图片

A. 210

B. 113

C. 98

D. 15

【答案】C

【考纲知识点】控制语句结构(一级)

【解析】本题考察循环结构和选择结构。循环范围是从1到20,每次循环结束后i++,i自增1;循环内判断当前数是3或者是5的倍数,就将i累加到sum当中,故从1到20,满足条件的数有3 5 6 9 10 12 15 18 20,相加结果为98,所以本题正确答案为C。

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

1.在Windows系统中通过键盘完成对选定文本移动的按键组合是先Ctrl+X,移动到目标位置后按Ctrl+V。

【答案】√

【考纲知识点】计算机基础(一级)

【解析】本题考察计算机基础中快捷键的使用。;Ctrl+X表示剪切文件(复制并从原位置删除),Ctrl+V表示粘贴所剪切的文件。所以本题正确。

2.程序员用C、C++、Python、Scratch等编写的程序能在CPU上直接执行。

【答案】×

【考纲知识点】计算机基础(一级)

【解析】本题属于对编程语言特点的考察。;题目中所列举的编程语言,均无法在CPU上直接执行,而是需要通过各自的方式,转换成机器语言后才能被CPU识别和执行,所以本题错误。

3.在C++语言中,注释不宜写得过多,否则会使得程序运行速度变慢。

【答案】×

【考纲知识点】计算机编程环境(一级)

【解析】本题考察计算机的编程环境。注释信息是写在代码当中方便程序阅读者理解代码的,养成书写注释的好习惯能够为编写更大规模的程序及团队合作打好基础。通常用两个斜杠开始一段注释,注释信息会在既不会被编译过程中被去掉,也不会产生机器指令,也就对运行结果产生影响,不会影响程序运行速度,所以本题错误。

4.在C++语言中,标识符中可以有数字,但不能以数字开头。

【答案】√

【考纲知识点】变量的定义与使用(一级)

【解析】本题考察C++语言中变量的定义与使用。;根据变量的命名规则:1.只能包含大小写字母、数字、下划线;2.必须以大小写字母或者下划线开头;3.不能使用C++的关键字指令。故标识符中可以有数字,但不能以数字开头,所以本题正确。

5. '3'是一个int类型常量。

【答案】×

【考纲知识点】基本数据类型(一级)

【解析】本题主要考察基本数据类型;。int是整型,例如3是一个int类型常量。定义变量时直接将数字赋值给int类型的变量,而但3加上单引号之后'3'在C++语言中表示变成了字符,所以它是char字符类型常量。

所以本题错误。

6. if语句中的条件表达式的结果必须为bool类型。

【答案】×  

【考纲知识点】控制语句结构(一级)

【解析】本题主要考察控制语句结构。;if语句的条件表达式不一定是bool类型,也可能是其他类型,任何非零值都会被视为真,而零值会被视为假。例如,如果,比如if(a-3),a为int类型变量,则if (a) ;是否符合C++语法的if语句,表示判断如果a-3是否为0:a不等于0时的话,,则视为真,if条件成立;,反之,如果a等于0,则视为假,if条件不成立。而但a-3的结果的类型为是int类型,并不是bool类型,所以本题错误。

7. for语句的循环体至少会执行一次。

【答案】×

【考纲知识点】控制语句结构(一级)

【解析】本题主要考察for循环结构,for循环分四步走:1.执行第一个分号前的初始表达式定义变量;2.判断两个分号之间的是否满足循环条件表达式结果是否为真;3.执行循环体;4.执行第二个分号后的步进表达式,并回到第2步重新判断改变循环变量。其中第2步,如果执行初始表达式后的状态循环条件表达式为假,则在执行循环体之前会有两步,如果判断不满足循环条件的话,就不会执行for循环体内的代码。,此时循环体可能一次也没有不会执行就结束了循环,所以本题错误。

8.如果a为int类型的变量,则赋值语句a = a + 3;是错误的,因为这条语句会导致a无意义。

【答案】×

【考纲知识点】变量的定义与使用(一级)

【解析】本题主要考察变量的定义与使用。尽管数学上a=a+3是无解的,但在C++语言中a=a+3并不表示方程或恒等式。,a为int类型的变量,执行a=a+3;,会让a的值结果变为在原值本的基础上增加3,不会导致a无意义。所以本题错误。

9.如果a为int类型的变量,则表达式(a / 4 == 2)和表达式(a >= 8 && a <= 11)的结果总是相同的。

【答案】√

【考纲知识点】基本运算(一级)

【解析】本题考察基本运算。由于a为int类型,表达式a/4==2中的除号/为整除运算。,因此表达式(a/4==2)表示a除以4的商为2,于是是int类型变量a的值从8到11时表达式结果为真,否则为假中的任意一个,除以4结果仍是int类型的2;如果a是小于8或大于11的数,则除以4结果不为2,结果为false,第二个表达式结果也为false。,结果总是相同的,这与表达式(a >= 8 && a <= 11)的结果总是相同的,所以本题正确。

10.表达式(3.5 * 2)的计算结果为7.0,且结果类型为double。

【答案】√

【考纲知识点】基本运算(一级)

【解析】本题考察了基本运算中的算术运算,在C++语言中,3.5是小数,是为double类型常量,2为和int类型的常量2进行计算,double类型与int类型做乘法运算的结果是double类型,结果为7.0,所以本题正确。

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

1.每月天数

【问题描述】

小明刚刚学习了每月有多少天,以及如何判断平年和闰年,想到可以使用编程方法求出给定的月份有多少天。你能做到吗?

【输入描述】

输入一行,包含两个整数,分别表示一个日期的年、月。

【输出描述】

输出一行,包含一个整数,表示输入月份有多少天。

【样例输入1】

图片

【样例输出1】

图片

【样例输入2】

图片

【样例输出2】

图片

【题目大意】条件判断问题,主要分清平年和闰年,平年2月28天,闰年2月29天,其余按照大小月取分,输出对应的天数。

【考纲知识点】基本数据类型、控制语句结构、输入输出语句、变量的定义与使用(一级)

【解题思路】

1.定义变量:年份y、月份m为int类型、判断是否为闰年的bool类型leap并赋值为false(一开始让它为平年);

2.输入年份、月份;

3.判断是否为闰年,如果是400的倍数,或者是4的倍数但不是100的倍数,就是闰年,将leap改为true;

4.判断是否为大月:1、3、5、7、8、10、12月为大月,输出31;小月:4、6、9、11月为小月,输出30;如果不是大月也不是小月,看下是否为闰年,闰年输出29,否则输出28。;

【参考程序】

图片

2.长方形面积

【问题描述】

小明刚刚学习了如何计算长方形面积。他发现,如果一个长方形的长和宽都是整数,它的面积一定也是整数。现在,小明想知道如果给定长方形的面积,有多少种可能的长方形,满足长和宽都是整数?

如果两个长方形的长相等、宽也相等,则认为是同一种长方形。约定长方形的长大于等于宽。正方形是长方形的特例,即长方形的长和宽可以相等。

【输入描述】

输入一行,包含一个整数,表示长方形的面积。约定2 ≤ A ≤ 1000。

【输出描述】

输出一行,包含一个整数,表示有种可能的长方形。

【样例输入1】

图片

【样例输出1】

图片

【样例解释1】

2种长方形面积为4,它们的长宽分别为2 x 2,4 x 1。

【样例输入2】

图片

【样例输出2】

图片

【样例解释2】

2种长方形面积为6,它们的长宽分别为3 x 2,6 x 1。

【题目大意】统计长方形的个数。两个长方形的长和宽相等算一种情况,所以规定长大于宽;长和宽相等是正方形,是长方形的特例,算一种情况。统计完个数之后输出。

【考纲知识点】变量的定义与使用、控制语句、基本运算、输入输出语句(一级)

【解题思路】

1.定义变量:面积area、计数变量cnt、宽w;

2.利用循环列举所有宽的可能性,从1开始,到宽*宽小于等于面积即可,后面大于宽的就是长了,和前面统计过的算一种情况,所以不用往后遍历。

3.每次循环判断面积对宽取余是不是为0,如果为0,说明长、宽都是整数,满足题意,计数变量cnt++;

4.for循环结束后输出计数变量cnt。

【参考程序】

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值