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

2023年 6月 GESP C++ 二级真题解析 选择题

时间:2024-05-04 21:31 作者:admin 点击:
一、单选题(每题 2 分,共 30 分) 1. 高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执行代码。 A. 编辑 B. 保存 C. 调试 D. 编译 【答案】D 【考纲知识点】计

一、单选题(每题 2 分,共 30 分)
1. 高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执行代码。
A. 编辑
B. 保存
C. 调试
D. 编译
【答案】D
【考纲知识点】计算机基础(一级)
【解析】本题考察计算机基础知识中编译的概念;编译是把高级语言变成计算机可以识别的二进制语言的过程,所以本题正确答案为 D。

2. 能够实现下面流程图功能的伪代码是( )。


A. if 条件判断 then 语句块
B. if 条件判断 then 什么也不做 else 语句块
C. while 条件判断 do 语句块
D. while not 条件判断 do 语句块
【答案】D
【考纲知识点】流程图的概念与描述(二级),循环语句(一级)【解析】本题考察对流程图的理解,以及循环结构中的while 循环;观察流程图可知,当条件判断不成立时,会执行语句块,并重新进行条件判断,当条件判断成立时,则流程继续往下进行,所以本题正确答案为 D。

3. 下列关于 C++语言的叙述,正确的是( )。
A. char 类型变量不能赋值给 int 类型的变量。
B. 两个 int 类型变量相乘,计算结果还是 int 类型。
C. 计算两个 int 类型变量相乘时,如果乘积超出了 int 类型的取值范围,程序会报错崩溃。
D. 计算两个 double 类型变量相除时,如果除数的值为0.0,程序会报错崩溃。

【答案】B
【考纲知识点】数据类型的转换(二级)
【解析】本题考察 C++中数据类型转换的规则;A 选项错误在于:char 类型变量可以赋值给 int 类型的变量,赋值结果为 char 类型变量中存放的整数值;C选项错误在于:如果两个 int 类型变量相乘的乘积超出了 int 类型的取值范围,那么会发生溢出,得到错误的结果,但是程序不会崩溃;D 选项错误在于:两个double类型变量相除时,如果除数的值为 0.0,得到的结果是特殊的double 类型值INF(被除数为正数时,正无穷)、-INF(被除数为负数时,负无穷)或NaN(被除数为 0 时,无意义),但是程序不会崩溃;所以本题正确答案为B。

4. 下列关于 C++语言的叙述,不正确的是( )。
A. if 语句中的判断条件必须用小括号‘(’和‘)’括起来。
B. for 语句中两个‘;’之间的循环条件可以省略,表示循环继续执行的条件一直满足。
C. 循环体包含多条语句时,可以用缩进消除二义性。
D. 除了“先乘除、后加减”,还有很多运算符优先级。

【答案】C
【考纲知识点】循环结构(一级)
【解析】本题考察循环语句的语法规则;C 选项错误在于:循环体包含多条语句时,需要用花括号把循环体中的所有语句括起来;所以本题正确答案为C。

5. 以下哪个是 C++语言的关键字?( )
A. main
B. max
C. double
D. sqrt
【答案】C
【考纲知识点】计算机基础与编程环境(一级)
【解析】本题考察 C++语言中“关键字”的概念;关键字就是预先定义好的标识符,C++编译器对其进行特殊处理,它们不能作为常量名、变量名或其他标识符名称;选项中只有 double 是关键字,其余均为函数名,所以本题正确答案为C。

6. 以下哪个不是 C++语言的运算符?( )
A. >=
B. /=
C. ||
D. <>
【答案】D
【考纲知识点】基本运算(一级)
【解析】本题考察 C++语言中的运算符;选项 A 为比较运算符:大于等于;选项B 为赋值运算符:除并赋值;选项 C 为逻辑运算符:逻辑或;选项D 不是C++中的运算符;所以本题正确答案为 D。

7. 如果 a 为 int 类型的变量,b 为 char 类型的变量,则下列哪个语句不符合C++语法?( )
A. a = a + 1.0;
B. a = (int)(b - '0');
C. b = (char)(a + '0');
D. (int)b = a;
【答案】D
【考纲知识点】数据类型的转换(二级)
【解析】本题主要考察 C++中数据类型转换的规则;强制类型转换得到的是改变类型的值,不再是能被赋值的变量;所以本题正确答案为D。

8. 如果用两个 int 类型的变量 a 和 b 分别表达平行四边形的两条边长,用int 类型的变量 h 表达 a 边对应的高,则下列哪个表达式不能用来计算b 边对应的高?( )
A. a / b * (0.0 + h)
B. (0.0 + a * h) / b
C. a * h / (b + 0.0)
D. (a + 0.0) * h / b
【答案】A
【考纲知识点】基本运算(一级),数据类型的转换(二级)【解析】本题主要考察 C++运算中除法的规则以及类型转换规则;在C++中,两个变量进行运算,如果两个变量都是 int 类型,那么结果仍然为int 类型(除法向下取整),如果两个变量中至少一个是 double 类型,那么结果为double 类型;在本题中,需要避免出现两个 int 类型变量相除,导致计算结果错误;只有A选项的除号两边都是 int 类型,所以本题正确答案为 A。

9. 以下哪个循环语句会无限次执行?( )
A. for (int a = 0; a; a++) ;
B. for (bool b = false; b <= true; b++) ;
C. for (char c = 'A'; c < 'z'; c++) ;
D. for (double d = 0.0; d < 10.0; d += 0.001) ;
【答案】B
【考纲知识点】基本数据类型(一级)
【解析】本题主要考察bool类型的运算规则;bool类型的取值范围是false和true,分别对应 0 和 1;B 选项中的 b++会使得 false 变为 true,true 依然变为true,导致循环条件始终成立,所以本题正确答案为 B。

10. 如果 a 为 char 类型的变量,且 a 的值为'C'(已知'C'的ASCII 码为67),则执行 cout << (a + 2);会输出( )。
A. E
B. C+2
C. C2
D. 69
【答案】D
【考纲知识点】数据类型的转换(二级)
【解析】本题主要考察数据类型转换中的类型提升;两个不同类型的变量进行运算时,一般会把字节数较小(低精度)的类型自动转换为字节数较大(高精度)的类型,再进行运算;题目中 a 是 char 类型,2 是 int 类型,那么a+2 的结果是int 类型,输出的结果是整数 69,所以本题正确答案为D。

11. 如果 a 和 b 均为 int 类型的变量,下列表达式能正确判断“a 等于1 且b等于1”的是( )。
A. (a == b) && (b == 1)
B. (a && b)
C. (a == b == 1)
D. (a * b == 1)
【答案】A
【考纲知识点】基本运算(一级)
【解析】本题主要考察 C++条件判断的语法格式;判断两个条件是否同时成立时,需要把两个条件用&&符号连接起来;B 选项只要 a 和 b 都非0 即成立;C 选项会将(a==b)的结果(0 或 1)与 1 判断相等,于是只要 a 和b 相等,结果就为真;D选项 a 和 b 都是-1 也满足条件;A 选项符合语法规则,所以本题正确答案为A。

12. 如果 a 为 char 类型的变量,下列哪个表达式可以正确判断“a 是数字”?()

A. '0' <= a && a <= '9'
B. '1' <= a && a <= '0'
C. '0' <= a <= '9'
D. '1' <= a <= '0'

【答案】A
【考纲知识点】ASCII 编码(二级),基本运算(一级)【解析】本题考察 C++中的比较运算以及数字字符的 ASCII 码;判断两个条件是否同时成立时,需要把两个条件用&&符号连接起来,C、D 选项不符合要求;数字字符的 ASCII 码最小的是'0',最大的是'9',所以本题正确答案为A。

13. 在下列代码的横线处填写( ),使得输出是 9。

#include<iostream>
using namespace std;
int main(){	 
	char a = '3',b = '6';
	cout<<_____;//在此处填写代码
	return 0;
}

A. (a + b)
B. (a + b - '0')
C. (char)(a + b)
D. (char)(a + b - '0')
【答案】D
【考纲知识点】ASCII 编码、数据类型的转换(二级)【解析】本题考察数据类型转换中的类型提升以及数字字符的ASCII 码;字符变量 a 的值是'3',相当于'0'加 3,字符变量 b 的值是'6',相当于'0'加6,因此a+b等于'0'+3+'0'+6,再减掉'0'的结果就是字符'9';由于加减法运算只能处理数值类型,而 char 不是数值类型,因此会把 char 转换成 int 进行计算,结果也是int 类型,最终输出字符时需要强制转换成 char 类型,所以本题正确答案为D。

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

#include<iostream>
using namespace std;
int main(){	 
	int sum = 0;
	for(int i = 1; i <= 20; i++)
		if(_____)//在此处填写代码
			sum += i;
	cout<< sum <<endl;
	return 0;
}

A. i % 3 == 0
B. 20 % i == 0
C. i <= 8
D. i >= 18
【答案】B
【考纲知识点】多层分支/循环结构(二级)
【解析】本题主要考察对循环语句和条件判断语句的理解;模拟程序执行过程可知,四个选项对应的输出结果分别是 63、42、36 和 57,所以本题正确答案为B。

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

#include<iostream>
using namespace std;
int main(){	 
	for(char x = 'A'; x <= 'D'; x++)
		if((x != 'A') + (x == 'C') + (x == 'D') + (x != 'D') == 3)
			cout<< x ;
	return 0;
}

A. A
B. B
C. C
D. D
【答案】C
【考纲知识点】多层分支/循环结构(二级),基本运算(一级)
【解析】本题主要考察对循环语句和条件判断语句的理解;括号内条件成立时结果为 true,也就是 1,否则为 false,也就是 0;字符 x 取字母A 到D,取到C时,恰好满足四个条件中的三个,总和为 3,所以本题正确答案为C。

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