欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

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

时间:2024-05-02 10:10 作者:fangys 点击:
一、单选题(每题 2 分,共 30 分) 1.以下不属于计算机输入设备的有( )。 A.键盘 B.音箱 C.鼠标 D.传感器 【答案】B 【考纲知识点】计算机基础(一级) 【解析】本题属于考察

一、单选题(每题 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 类型常量,将它们相加时会从低精度的高精度的进行类型转换,最终结果为 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,k 是一个整数,0<=t<=3,则(a+3)/4=(4k+t+3)/4=k+(t+3)/4。如果 a 是 4 的倍数,则 t=0 , (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。


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

#include <iostream>
using namespace std;
int main() {
	int a=10,b=20;
	a=_____; // 在此处填写代码
	b=a/100;
	a=a%100;
	cout<<a<<" "<<b<<endl;
	return 0;
}

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。所以本题正确答案为 D。


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

#include <iostream>
using namespace std;
int main() {
	for(int i=1;i<=8;____) // 在此处填写代码
		cout<<i;
	return 0;
}

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++语言程序后,输出结果是()。

#include <iostream>
using namespace std;
int main() {
	int sum = 0;
	for(int i=1; i<=20; i++)
		if(i%3==0||i%5==0)
			sum+=i;
	cout<<sum<<endl;
	return 0;
}

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。

(责任编辑:admin)
    顶一下
    (1)
    100%
    踩一下
    (0)
    0%