2018年9月计算机二级C++考试冲刺必做题及答案(1)
一、选择题(每小题1分,共40分)
1 [单选题] 已知枚举类型声明语句为:
enum COLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};
则下列说法中错误的是( )。
A.枚举常量YELLOW的值为1
B.枚举常量RED的值为6
C.枚举常量BLACK的值为10
D.枚举常量WHITE的值为1
参考答案:D
参考解析:
C++语言规定枚举常量的默认值依次等于0,1,…,n-1。也可以给枚举常量赋初值,方法是:在枚举常量的后面跟上“=整型常量”,在给枚举常量赋初值时,如果给其中任何一个枚举常量赋初值,则其后的枚举常量将按自然数的规则依次赋初值。所以本题答案为D。
2 [单选题] 在软件开发中。需求分析阶段产生的主要文档是( )。
A.软件集成测试计划
B.软件详细设计说明书
C.用户手册
D.软件需求规格说明书
参考答案:D
参考解析:
需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择D。
3 [单选题] 下列符号中不属于c++关键字的是( )。
A.friend
B.namespace
C.continue
D.byte
参考答案:D
参考解析:
本题考查c++关键字,属于基本常识,显然D选项不正确。
4 [单选题] 若count为类Toy中的静态数据成员,obj为类Toy的一个对象,则在该类的成员函数中访问count时,错误的是( )。
A.count
B.obj.count
C.Toy.count
D.Toy::count
参考答案:C
参考解析:
静态数据成员也属于类的成员,所以该类的成员函数可以直接访问,选项A正确;使用类对象访问类成员时,使用成员运算符”.”,选项B正确;由于count为Toy类的静态数据成员,所以可以使用类名来访问,需要加上count的命名空间,Toy::count,选项D正确。故本题答案为C选项。
5 [单选题] 下列( )是C++语言的有效标识符。
A._No1
B.N0.1
C.12345
D.int
参考答案:A
参考解析:
标识符是一个以字母或下画线开始的,由字母、下画线和数字组成的字符串,标识符不能与任意关键字同名。
6 [单选题] 为了提高函数调用的实际运行速度,可以将较简单的函数定义为( )。
A.内联函数
B.重载函数
C.递归函数
D.函数模板
参考答案:A
参考解析:
一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,一般只将规模很小而使用频繁的函数声明为内联函数,可以避免函数调用时间开销,从而提高运行速度。
7 [单选题] 以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原因是( )。
A.*P表示的是指针变量P的地址
B.P表示的是变量a的地址,而不是变量a的值
C.+P表示的是指针变量P的值
D.*P只能用来说明P是一个指针变量
参考答案:B
参考解析:
P表示的是变量a的地址,定义后*P表示的是变量a的值。
8 [单选题] 有三个关系R,S和T如下:
其中关系T由关系R和s通过某种操作得到,该操作为( )。
A.选择
B.投影
C.交
D.并
参考答案:D
参考解析:
并关系T中包含了关系R与S中的所有元组,所以进行的是并的运算。
9 [单选题] 在数据管理技术发展的三个阶段中,数据共享最好的是( )。
A.人工管理阶段
B.文件系统阶段
C.数据库系统阶段
D.三个阶段相同
参考答案:C
参考解析:
数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C。
10 [单选题] 数据库设计中反映用户对数据要求的模式是( )。
A.内模式
B.概念模式
C.外模式
D.设计模式
参考答案:C
参考解析:
数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以选择c。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法。
11 [单选题] 下面程序的运行结果为( )。
A.10
B.11
C.12
D.0
参考答案:C
参考解析:
在进入最后一次循环时a=10,在循环体内执行“a++;”后a=11,执行完该次循环体计算for循环的增量部分后a=12小于10,循环结束。
12 [单选题] 下列关于栈叙述正确的是( )。
A.栈顶元素最先能被删除
B.栈顶元素最后才能被删除
C.栈底元素永远不能被删除
D.栈底元素最先被删除
参考答案:A
参考解析:
栈是先进后出的数据结构,所以栈顶元素最后入栈却最先被删除。栈底元素最先入栈却最后被删除。所以选择A。
13 [单选题] 下列数组定义中错误的是( )。
A.char s[5]=”ABCDE”;
B.char s[6]=”ABCDE”;
C.char s[7]=”ABCDE”;
D.char s[]=”ABCDE”;
参考答案:A
参考解析:
常量字符串“ABCDE”中,结尾还保存一个空字符'O ',总共有6个字符,所以字符数组S使用常量字符串初始化时,S的数组大小必须大于等于6,选项B、C正确;另外在对字符数组初始化时,若省略数组长度,系统会默认将数组长度设置为常量字符串的长度6,选项D正确;选项A中数组长度5不够容纳该常量字符串,所以A错误。故本题答案为A选项。
14 [单选题] 由于常对象不能被更新,因此( )。
A.通过常对象只能调用它的常成员函数
B.通过常对象只能调用静态成员函数
C.常对象的成员都是常成员
D.通过常对象可以调用任何不改变对象值的成员函数
参考答案:A
参考解析:
本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非const函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选A。
15 [单选题] 设有定义int x;float y;,则10+X+Y值的数据类型是( )。
A.int
B.double
C.float
D.不确定
参考答案:C
参考解析:
由算术运算符组成的表达式中,若含有不同类型的操作数,则系统隐含地将低类型转化为高类型,由低至高的顺序为int→float→double。
16 [单选题] 下列各组类型声明符中,含义相同的一组是( )。
A.unsigned long int和long
B.signed short int和short
C.unsigned short和short
D.short int和int
参考答案:B
参考解析:
本题考查整型变量的类型,A、C选项中前者为无符号的,后者为有符号的,D选项中short int为2个字节,int为4个字节。
17 [单选题] 下面程序的输出结果是( )。
A.22
B.43
C.42
D.32
参考答案:C
参考解析:
“++”是右结合的,所以先赋值为3,最后输出3+1;常成员函数只有常对象才能调用,所以输出2。
18 [单选题] 有如下程序:
执行这个程序的输出结果是( )。
A.val=10 const:val=20
B.const: val=10 const:val=20
C.const: val=10 val=20
D.val=10 val=20
参考答案:C
参考解析:
本题考查常对象、常成员函数及构造函数。常对象只能调用常成员函数,普通对象调用普通成员函数。所以本题中obj1为常对象,执行obj1.print()后,会执行常构造函数,输出const:val=10;而obj2为普通对象,执行obj2.print()时,会执行默认构造函数,输出val=20。故答案为C。
19 [单选题] 下面叙述中错误的是( )。
A.软件测试的目的是发现错误并改正错误
B.对被调试的程序进行“错误定位”是程序调试的必要步骤
C.程序调试通常也称为Debug
D.软件测试应严格执行测试计划,排除测试的随意性
参考答案:A
参考解析:
软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。
20 [单选题] 下列关于常成员的叙述中,正确的是( )。
A.常成员函数只能由常对象调用
B.常成员函数不能更新对象的状态
C.常数据成员可以被类对象共享
D.常数据成员可以在构造函数体中初始化
参考答案:B
参考解析:
常对象只能调用常成员函数,普通对象可以调用全部成员函数,包括常成员函数,选项A错误;常成员函数不能改变所操作对象的数据成员,即常成员函数不能更新对象的状态,选项8正确;常数据成员是指在类定义中不能修改其值的数据成员,它和普通类成员一样,不能被所有类对象共享,选项C错误;类中的常数据成员只能通过构造函数的参数初始化列表进行初始化,选项D错误。故本题答案为B选项。
21 [单选题] 下列关于类模板的叙述中,正确的是( )。
A.类模板实例化时,编译器会根据给出的模板实参生成一个类
B.类模板中的成员函数没有返回值
C.类模板的主要作用是生成抽象类
D.类模板中的数据成员具有同样类型
参考答案:A
参考解析:
类模板在引用实际模板类类型时实例化,编译器会根据给出的模板实参生成一个类的定义,选项A正确;类模板中的成员函数同普通类的成员函数一样,也可以有返回值,返回值类型可以是模板形参类型,也可以是具体类型,选项8错误;类模板的主要作用是生成类,而不是生成抽象类,选项C错误;类模板中的成员类型可以是模板形参类型,也可以是具体类型,选项D错误。本题答案为A选项。
22 [单选题] 结构化程序的三种基本结构是( )。
A.递归、迭代和回溯
B.过程、函数和子程序
C.顺序、选择和循环
D.调用、返回和选择
参考答案:C
参考解析:
仅使用顺序、选择、循环三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。故本题答案为C选项。
23 [单选题] 有如下类声明:
2018年9月计算机二级C++考试冲刺必做题及答案(1)
下列关于getValue成员函数的定义中,正确的是( )。
A.SAMPLE::setValue(int nO){n=n0;}
B.void SAMPLE::setValue(int nO){n=n0;}
C.void setValue(int nO){n=n0;}
D.setValue(int nO){n=n0;}
参考答案:B
参考解析:
本题考查在类外定义类的成员函数,需要使用作用域限定符“::”,属于基础知识,本题答案为B。
24 [单选题] 下列关于基类和派生类关系的叙述中,正确的是( )。
A.每个类最多只能有一个直接基类
B.派生类中的成员可以访问基类中的任何成员
C.基类的构造函数必须在派生类的构造函数体中调用
D.派生类除了继承基类的成员,还可以定义新的成员
参考答案:D
参考解析:
本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派生类的成员并不能访问基类的成员。如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数时,在派生类构造函数的定义中可以省略对基类构造函数的调用。所以本题答案为D。
25 [单选题] 有如下程序段:
2018年9月计算机二级C++考试冲刺必做题及答案(1)
其中会产生编译错误的语句是( )。
A.④
B.③
C.②
D.①
参考答案:A
参考解析:
本题考查指针和引用。①为引用,使用正确;④中&r表示一个地址,而*P已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。
26 [单选题] 软件测试的目的是( )。
A.评估软件可靠性
B.发现并改正程序中的错误
C.改正程序中的错误
D.发现程序中的错误
参考答案:D
参考解析:
软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误。
27 [单选题] 为了使用setw设置输出宽度,必须在程序中包含头文件( )。
A.iostream
B.iomainp
C.fstream
D.string
参考答案:B
参考解析:
C++中,格式控制符在头文件iomanip中定义,所以要使用格式控制符setw,必须包含iomanip。故本题答案为B选项。
28 [单选题] 下列语句中错误的是( ):
A.const int a;
B.const int a=10;
C.const int*point=0;
D.const int*point=new int(10):
参考答案:A
参考解析:
const是一个C++语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。A选项没有初始化,B、C、D选项都正确。
29 [单选题] 对c++编译器区分重载函数无任何意义的信息是( )。
A.参数类型
B.参数个数
C.返回值类型
D.常成员函数关键字const
参考答案:C
参考解析:
所谓函数重载是指同一个函数名可以对应多个函数的实现。每种实现对应一个函数体,这些函数的名字相同,其参数类型或个数不同,但不能出现函数返回值类型不同而参数类型和个数完全相同的重载。所以本题答案为C。
30 [单选题] 下面关于数组的初始化正确的是( ):
2018年9月计算机二级C++考试冲刺必做题及答案(1)
参考答案:A
参考解析:
本题考查的是字符数组的初始化。选项B中用3个元素初始化大小为2的数组,越界了;选项C中应该是2行3列的数组,题中使用3行2列初始化;选项D中数组合后应用方括号。
31 [单选题] 对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )。
A.公有类型
B.私有类型
C.保护类型
D.友元类型
参考答案:D
参考解析:
所谓的访问控制只包含公有类型、私有类型和保护类型3种,友元可以是一个函数,也可以是一个类。
32 [单选题] 下列语句中,未起到定义作用的是( )。
A.char ch;
B.void fun( );
C.int Y=2015;
D.typedef double price;
参考答案:B
参考解析:
选项A定义一个字符变量ch;选项C定义整型Y,并初始化为2015;选项D定义一种类型名price,该类型等价于double;选项B声明了函数fun,该函数没有参数,没有返回值,声明不是定义,选项B错误。故本题答案为B选项。
33 [单选题] 若已经声明了函数原型“void fun(int a,double b=0.0)”,则下列重载函数声明中正确的是( )。
A.void fun(int a=90,double b=0.0);
B.int fun(int a,double B.;
C.void fun(double a,int B.;
D.bool fun(int a,double b=0.0);
参考答案:C
参考解析:
函数不能仅仅基于不同的返回类型而实现重载,选项B中只有返回值不同,所以选项B、D错误;出现在相同作用域中的两个函数,如果具有相同的名字而形参表不同,则称为重载函数,形参表的不同,是指形参个数或类型不同;默认实参并没有改变形参的类型和个数,所以仅仅基于默认实参,也不能实现函数重载,选项A错误;选项C中形参对应的类型不同;本题答案为C选项。
34 [单选题] 负责数据库中查询操作的数据库语言是( )。
A.数据定义语言
B.数据管理语言
C.数据操纵语言
D.数据控制语言
参考答案:C
参考解析:
数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。
35 [单选题] 定义学生、教师和课程的关系模式S(S#,Sn,Sd,De,SA.(其属性分别为学号、姓名、所在系、所在系的系主任、年龄);C(c#,Cn,P#)(其属性分别为课程号、课程名、先修课);SC(S#,C#,G)(其属性分别为学号、课程号和成绩),则该关系为( )。
A.第二范式
B.第一范式
C.第三范式
D.BCNF范式
参考答案:A
参考解析:
范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、Boyce-Codd范式(BCNF)、第四范式(4NF)和第五范式(5NF)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。 第一范式:主属性(主键)不为空且不重复,字段不可再分(存在非主属性对主属性的部分依赖)。
第二范式:如果关系模式是第一范式,每个非主属性都没有对主键的部分依赖。
第三范式:如果关系模式是第二范式,没有非主属性对主键的传递依赖和部分依赖。
BCNF范式:所有属性都不传递依赖于关系的任何候选键。
题目中关系模式满足第二范式,但在关系模式S中,学生所在系依赖于学号(s#→Sd),但系本身确定了系主任(Sd→Dc),存在传递依赖,不满足第三范式。故本题答案为A选项。
36 [单选题] 对于一个类定义,下列叙述中错误的是( )。
A.如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数
B.如果没有定义缺省的构造函数,编译器一定将生成一个缺省的构造函数
C.如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数
D.如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数
参考答案:B
参考解析:
本题考查构造函数和复制构造函数,如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数,如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数。如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。
37 [单选题] 某二叉树共有399个结点,其中有199个度为2的结点,则该二叉树中的叶子结点数为( )。
A.不存在这样的二叉树
B.200
C.198
D.199
参考答案:B
参考解析:
根据二又树的基本性质,对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中度为2的结点为199个,则叶子结点为l99+1=200。故本题答案为B选项。
38 [单选题] 下列关于C++类的叙述中,错误的是( )。
A.类与类之间可以互为友元
B.类用于描述事物的属性和对事物的操作
C.类与类之间不能有组合关系
D.类与类之间可以通过封装而具有相对独立性
参考答案:C
参考解析:
友元机制允许一个类将对其非公有成员的访问权授予指定的函数或类,类和类之间可以互为友元关系,选项A正确;类代表某一种事物(对象)的共性和特征,用于描述事物的属性(数据成员)和对事物的操作(成员函数),选项B正确;类和类之间可以通过封装而具有相对独立性,选项D正确;类和类之 间的关系有:继承、实现、依赖、关联、组合、聚合等,选项c错误。本题答案为c选项。
39 [单选题] 下列语句中,能够进行正确赋值的是( )。
A.char str=’abcde’;
B.char str=”abcde”;
C.char str[4]=”abcde”;
D.char str[6]=”abode”;
参考答案:D
参考解析:
字符常量是单个字符,单引号’’中只能有1个字符,选项A错误;字符串常量不能赋给字符变量,选项B错误;常量字符串“abcde”包含5个字符和1个空字符’