【计算机类职业资格】二级C++-174及答案解析.doc

上传人:visitstep340 文档编号:1323994 上传时间:2019-10-17 格式:DOC 页数:17 大小:76KB
下载 相关 举报
【计算机类职业资格】二级C++-174及答案解析.doc_第1页
第1页 / 共17页
【计算机类职业资格】二级C++-174及答案解析.doc_第2页
第2页 / 共17页
【计算机类职业资格】二级C++-174及答案解析.doc_第3页
第3页 / 共17页
【计算机类职业资格】二级C++-174及答案解析.doc_第4页
第4页 / 共17页
【计算机类职业资格】二级C++-174及答案解析.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、二级 C+-174 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列链表中,其逻辑结构属于非线性结构的是_。(分数:2.50)A.二叉链表B.循环链表C.双向链表D.带链的栈2.设循环队列的存储空间为 Q(1:35),初始状态为 front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列的元素个数为_。(分数:2.50)A.15B.16C.20D.0 或 353.下列关于栈的叙述中,正确的是_。(分数:2.50)A.栈底元素一定是最后入栈的元素B.栈顶元素一定是最先入栈的元素C.栈操作遵循先

2、进后出的原则D.以上三种说法都不对4.在关系数据库中,用来表示实体间联系的是_。(分数:2.50)A.属性B.二维表C.网状结构D.树状结构5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是_。(分数:2.50)A.1:1 联系B.m:1 联系C.1:m 联系D.m:n 联系6.有两个关系 R 和 S 如下: (分数:2.50)A.选择B.投影C.自然连接D并7.数据字典(DD)所定义的对象包含于_。(分数:2.50)A.数据流图(DFD 图)B.程序流程图C.软件结构图D.方框图8.软件需求规格说明书的作用不包括_。(分数:2.50)

3、A.软件验收的依据B.用户与开发人员对软件要做什么的共同理解C.软件设计的依据D.软件可行性研究的依据9.下列属于黑盒测试方法的是_。(分数:2.50)A.语句覆盖B.逻辑覆盖C.边界值分析D.路径分析10.下列不属于软件设计阶段任务的是_。(分数:2.50)A.软件总体设计B.算法设计C.制定软件确定测试计划D.数据库设计11.在数据结构中,从逻辑上可以把数据结构分成_。(分数:2.50)A.动态结构和静态结构B.线性结构和非线性结构C.紧凑结构和非紧凑结构D.内部结构和外部结构12.希尔排序属于_。(分数:2.50)A.交换排序B.归并排序C.选择排序D.插入排序13.在深度为 5 的满二

4、叉树中,叶子结点的个数为_。(分数:2.50)A.32B.31C.16D.1514.下列叙述中正确的是_。(分数:2.50)A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构15.以下叙述中,不属于面向对象方法的优点的是_。(分数:2.50)A.可重用性好B.与人类习惯的思维方法一致C.可维护性好D.有助于实现自顶向下、逐步求精16.下列关于函数重载的叙述中,错误的是_。(分数:2.50)A.重载函数的参数个数可以不同B.重载函数的参数类型可以不同C.重载函数的返回值类型必须不同D.重载函数的参数个数或参数类型必须有所不同17.下列关于类成员对象构造函数调

5、用顺序的叙述中,正确的是_。(分数:2.50)A.与它们在初始化列表中的顺序相同B.与它们在类中声明的顺序相同C.与析构函数的调用顺序相同D.顺序不确定18.下列关于派生类的叙述中,错误的是_。(分数:2.50)A.派生类至少要有一个基类B.派生类中包括了从基类继承的成员C.一个派生类可以作为另一个派生类的基类D.基类成员被派生类继承以后访问权限保持不变19.下列关于运算符重载的叙述中,正确的是_。(分数:2.50)A.通过运算符重载机制可以为 C+语言扩充新的运算符B.运算符重载的作用是使已有的运算符作用于类的对象C.重载运算符的操作数类型可以全部为基本类型D.所有运算符都可以被重载20.下

6、列关于模版的叙述中,错误的是_。(分数:2.50)A.调用模板函数时,有时可以省略模板实参B.函数模板的每个实例就是一个函数定义C.类模板的每个实例就是一个类定义D.类模板的实例是一个类对象21.下列关于输入/输出流的叙述中,正确的是_。(分数:2.50)A.一个文件流可以与一个数据文件相联系B.cin 是专门从键盘输入数据的输入流类C.流运算符用来从输入流中读取数据D.宽度设置的效果永久有效22.下列选项中可以做 C+标示符的是_。(分数:2.50)A._256B.fat./pigC.deleteD.5char23.关键字 unsigned 不能修饰的类型是_。(分数:2.50)A.char

7、B.intC.floatD.long int24.有如下程序: #inchldeiostream using namespace std; int main() char a; cina; if(a=“*“)cout“*“endl; else cout“#“endl; return 0; 输入字符+时,程序的运行结果是_。(分数:2.50)A.*B.#C.*#D.无输出25.下列对一维数组 a 的定义中,语法正确的是_。(分数:2.50)A.int a(10);B.int n=7.an;C.int n; cinn; int a;D.const int size=10; int asize;26

8、.假设函数 fun 已经定义,其原型为“void fun(int a, int b=7, char * p=“*“);”,下列函数调用中错误的是_。(分数:2.50)A.fun(5)B.fun(5, 8)C.fun(6, “#“)D.fun(0, 0, “=“)27.已知函数 print()没有返回值,如果在类中将之声明为常成员函数,正确的是_。(分数:2.50)A.void print() constB.const void print()C.void const print()D.void print(const)28.已知基类 Employee 只有一个构造函数,其定义如下: Emplo

9、yee:Employee(int n):id(n) Manager 是 Employee 的派生类,则下列对 Manager 的构造函数的定义中,正确的是_。(分数:2.50)A.Managaer:Manager(int n):id(n)B.Managaer:Manager(int n)id=n;C.Managaer:Manager(int n):Employee(n)D.Managaer:Manager(int n)Employee(n);29.已知将运算符“+”和“*”作为 Complex 的成员函数重载,设 c1 和 c2 是类 complex 的对象,则表达式 c1+c2*c1 等价于

10、_。(分数:2.50)A.c1.operaror*(c2.operator+(c1)B.c1.operator+(c2.operator*(c1)C.c1.operator*(c1.operator+(c2)D.c2.operator+(c1.operator*(c1)30.下列类模板的定义中语法格式错误的是_。(分数:2.50)A.templateclass Tclass Buffer/*/);B.templatetypenameclass Buffer/*/;C.templateclass T1, class T2class Buffer/*/;D.templateTclass Buffe

11、r/*/;31.在 C+中既可以用于文件输入又可以用于文件输出的流类是_。(分数:2.50)A.fstreamB.ifstreamC.ofstreamD.iostream32.有如下类定义: class MyClass int b; char a; double c; public: MyClass():c(0.0), b(0), a(“,“) 创建这个类的对象时,数据成员的初始化顺序是_。(分数:2.50)A.a, b, cB.c, b, aC.b, a, cD.c, a, b33.有如下类定义: class MyClass int x; public: MyClass():x(0), y(

12、0) int GetX()return x; void SetX(int xx)x=xx; int y; ; 已知 obj 是类 MyClass 的对象,下列语句中违反类成员访问控制权限的是_。(分数:2.50)A.obj.x;B.obj.y;C.obj.GetX();D.obj.SetX(0);34.有如下类定义: class Test char a; const char b; public: Test(char c)a=c; b=c; /第一行 void f(char a)constthis-a=a; /第二行 void g(char b)this-b=b;/第三行 char h()co

13、nstreturn a; /第四行 ; 编译时没有错误的行是_。(分数:2.50)A.第一行B.第二行C.第三行D.第四行35.有如下程序: #includeiostream using namespace std; class A public: A()cout“A“; A()cout“C“; ; class B:public A public: B()cout“G“; B()cout“T“; ; int main() B obj; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.GATCB.AGTCC.GACTD.AGCT36.有如下程序: #includeiostr

14、eam using namespace std; class Base public: void fun()cout“B“; Class Derived:public Base public: void fun()_cout“D“; ; int main() Derived d; d.fun(); return 0; 若程序的输出结果是 BD,则画线处缺失的部分是_。(分数:2.50)A.fun();B.Base.fun();C.Base:fun();D.Base-fun();37.有如下程序: #includeiostream using namespace std; class B pub

15、lic: virtual void f()cout“B“; void g()cout“B“; ; class D:public B public: void f()cout“D“; void g()cout“D“; ; void h(B* p)p-f(); p-g(); int main() D obj; h( return 0; 运行这个程序的输出结果是_。(分数:2.50)A.DDB.BBC.BDD.DB38.有如下程序: #includeiostream #includestring using namespace std; class MyString public: char str

16、80; MyString(const char*s)strepy(str s); MyString return*this; ; ostream int main() MyString x(“abc“), y(“cde“); cout(x+=y)endl; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.abcB.cdeC.abcdeD.abccde39.有如下程序: #includeiostream #includeiomanip using namespace std; int main() coutsetfill(“#“)setw(4)“OK“123endl; re

17、turn 0; 运行这个程序的输出结果是_。(分数:2.50)A.#OK123B.#OK#123C.OK#123D.OK#123#40.有如下语句序列: ifstrem infile(“DATA.DAT“); if(infile.good() cout“A“; else cout“B“; ofstrem outfile(“DATA.DAT“); if(outfile.fail() cout“C“; else cout“D“; 若执行这个语句序列显示的是 BD,则说叫文件 DATA,DAT_。(分数:2.50)A.以读方式打开成功B.以读方式打开失败,但以写方式打开成功C.以读方式打开失败,但以

18、写方式打开失败D.以读方式打开成功,但以写方式打开成功二级 C+-174 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列链表中,其逻辑结构属于非线性结构的是_。(分数:2.50)A.二叉链表 B.循环链表C.双向链表D.带链的栈解析:解析 对于线性结构,除了首结点和尾结点外,每一个结点只有一个前驱结点和一个后继结点。线性表、栈、队列都是线性结构,循环链表和双向链表是线性表的链式存储结构;带链的栈是栈的链式存储结构。二叉链表是二叉树的存储结构,而二叉树是非线性结构,因为二叉树有些结点有两个后继结点,不符合线性结构的定义。2.设循环队列的

19、存储空间为 Q(1:35),初始状态为 front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列的元素个数为_。(分数:2.50)A.15B.16C.20D.0 或 35 解析:解析 循环队列中,front 为队首指针,指向队首元素的前一个位置;rear 为队尾指针,指向队尾元素。由题目可知,循环队列最多存储 35 个元素。front=rear=15 时,循环队列可能为空,也可能为满。3.下列关于栈的叙述中,正确的是_。(分数:2.50)A.栈底元素一定是最后入栈的元素B.栈顶元素一定是最先入栈的元素C.栈操作遵循先进后出的原则 D.以上三种说法都

20、不对解析:解析 栈是一种先进后出的线性表,也就是说,最先入栈的元素在栈底,最后出栈;而最后入栈的元素在栈顶,最先出栈。4.在关系数据库中,用来表示实体间联系的是_。(分数:2.50)A.属性B.二维表 C.网状结构D.树状结构解析:解析 关系数据库使用的是关系模型,用二维表来表示实体间的联系。属性是客观事物的一些特性,在二维表中对应于列。5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是_。(分数:2.50)A.1:1 联系B.m:1 联系C.1:m 联系 D.m:n 联系解析:解析 实体间的联系有一对一(1:1)、一对多(1:m)和多

21、对多(m:n),没有多对一(m:1)。题目中,一个部门可以有多名职员,而每个职员只能属于一个部门,显然,部门和职员间是一对多的联系。6.有两个关系 R 和 S 如下: (分数:2.50)A.选择 B.投影C.自然连接D并解析:解析 由关系 R 得到关系 S 是一个一元运算,而自然连接和并都是多元运算可以排除选项 C 和选项 D。关系 S 是由关系 R 的第 3 个元组组成,很显然这是对关系 R 进行选择运算的结果。投影运算则是要从关系 R 中选择某些列。可以简单地理解,选择运算是对行的操作,投影运算是对列的操作。7.数据字典(DD)所定义的对象包含于_。(分数:2.50)A.数据流图(DFD

22、图) B.程序流程图C.软件结构图D.方框图解析:解析 数据字典用于对数据流图中出现的被命名的图形元素进行确切地解释,是结构化分析中使用的工具。8.软件需求规格说明书的作用不包括_。(分数:2.50)A.软件验收的依据B.用户与开发人员对软件要做什么的共同理解C.软件设计的依据D.软件可行性研究的依据 解析:解析 需求规格说明书是需求分析的成果,其作用是:便于用于、开发人员进行理解和交流;反映用户问题的结构,可作为软件开发工作的基础和依据;可作为确认测试和验收的依据。可行性研究是在需求分析之前进行的,软件需求规格说明书不可能作为可行性研究的依据。9.下列属于黑盒测试方法的是_。(分数:2.50

23、)A.语句覆盖B.逻辑覆盖C.边界值分析 D.路径分析解析:解析 黑盒测试用于对软件的功能进行测试和验证,不须考虑程序内部的逻辑结构。黑盒测试的方法主要包括:等价类划分法、边界值分析法、错误推测法、因果图等。语句覆盖、逻辑覆盖、路径分析均是白盒测试的方法。10.下列不属于软件设计阶段任务的是_。(分数:2.50)A.软件总体设计B.算法设计C.制定软件确定测试计划 D.数据库设计解析:解析 软件概要设计阶段的任务有:软件系统的结构的设计、数据结构和数据库设计、编写概要设计文档、概要设计文档评审。确认测试是依据需求规格说明书来验证软件的功能和性能,也就是说,确认测试计划是在需求分析阶段就制定了。

24、11.在数据结构中,从逻辑上可以把数据结构分成_。(分数:2.50)A.动态结构和静态结构B.线性结构和非线性结构 C.紧凑结构和非紧凑结构D.内部结构和外部结构解析:解析 数据的逻辑结构主要分为线性结构和非线性结构。12.希尔排序属于_。(分数:2.50)A.交换排序B.归并排序C.选择排序D.插入排序 解析:解析 分析:希尔排序的基本思想是把记录按下标的一定增量分组,对每组记录使用插入排序,随增量的逐渐减小,所分成的组包含的记录越来越多,到增量的值减小到 1 时,整个数据合成一组,构成一组有序记录,故其属于插入排序方法。13.在深度为 5 的满二叉树中,叶子结点的个数为_。(分数:2.50

25、)A.32B.31C.16 D.15解析:解析 分析:在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第 k 层上有 2 k-1 个结点。叶子结点在第 7 层上,有 2 5-1 =16 个结点。14.下列叙述中正确的是_。(分数:2.50)A.线性表是线性结构 B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构解析:解析 分析:线性表是一个线性结构。数据元素在线性表中的位置只取决于它们自己的序号。栈是限定在一端进行插入与删除的线性表。队列是指允许在一端进行插入、而在另一端进行删除的线性表。链式存储方式既可用于表示线性结构,也可用于表示非线性结构。树是一种简单的非线性

26、结构。15.以下叙述中,不属于面向对象方法的优点的是_。(分数:2.50)A.可重用性好B.与人类习惯的思维方法一致C.可维护性好D.有助于实现自顶向下、逐步求精 解析:解析 分析:面向对象程序设计方法并不强调自顶向下构造程序,而常常是自底向上的,而自顶向下、逐步求精是结构化程序设计的特点。16.下列关于函数重载的叙述中,错误的是_。(分数:2.50)A.重载函数的参数个数可以不同B.重载函数的参数类型可以不同C.重载函数的返回值类型必须不同 D.重载函数的参数个数或参数类型必须有所不同解析:解析 重载函数是函数的一种特殊情况,为方便使用,C+允许在同一范围中声明几个功能类似的函数同名,但是这

27、些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。17.下列关于类成员对象构造函数调用顺序的叙述中,正确的是_。(分数:2.50)A.与它们在初始化列表中的顺序相同B.与它们在类中声明的顺序相同 C.与析构函数的调用顺序相同D.顺序不确定解析:解析 基类构造函数。如果有多个基类,则构造函数的调用顺序是某类在类派生表中出现的顺序,而不是它们在成员初始化表中的顺序。成员类对象构造函数。如果有多个成员类对象则构造函数的调用顺序是对象在类中被声明的顺序,而不是它们出现在成员初始化表中的顺序。18.下列关于派生类的叙述中,错误的是_。(分数:2.50)

28、A.派生类至少要有一个基类B.派生类中包括了从基类继承的成员C.一个派生类可以作为另一个派生类的基类D.基类成员被派生类继承以后访问权限保持不变 解析:解析 一个派生类可以作为另一个派生类的基类;无论是单继承还是多继承,派生类至少有一个基类;派生类的成员除了它自己的成员外,还包含了它的基类成员;派生类中继承的基类成员的访问权限到派生类受继承方式影响的。19.下列关于运算符重载的叙述中,正确的是_。(分数:2.50)A.通过运算符重载机制可以为 C+语言扩充新的运算符B.运算符重载的作用是使已有的运算符作用于类的对象 C.重载运算符的操作数类型可以全部为基本类型D.所有运算符都可以被重载解析:解

29、析 运算符重载就是赋予已有的运算符多重含义。C+中通过重新定义运算符,使它能够用于特定类的对象执行特定的功能,这便增强了 C+语言的扩充能力。20.下列关于模版的叙述中,错误的是_。(分数:2.50)A.调用模板函数时,有时可以省略模板实参B.函数模板的每个实例就是一个函数定义C.类模板的每个实例就是一个类定义 D.类模板的实例是一个类对象解析:解析 模板可以看作一种高级宏。通过一次实例化模板可以得到一个类。模板和类的关系类似于类和对象的关系。但是一个类可以实例化多次,就是说一个类可以生成多个对象,只要给出的参数相同,所生成的对象在那一刻的内部状态就是一样的。但是模板只能用一套参数实例化一次。

30、21.下列关于输入/输出流的叙述中,正确的是_。(分数:2.50)A.一个文件流可以与一个数据文件相联系B.cin 是专门从键盘输入数据的输入流类 C.流运算符用来从输入流中读取数据D.宽度设置的效果永久有效解析:解析 cin 对应计算机系统的标准输入设备,通常为键盘;需要使输出项的输出宽度不小于某个宽度,若输出项自身的宽度大于指定的宽度,则使用输出项目自身的宽度。22.下列选项中可以做 C+标示符的是_。(分数:2.50)A._256 B.fat./pigC.deleteD.5char解析:解析 每个标识符都是字母、数字和下画线的非空序列,且序列不能以数字开头。标识符是大小写敏感的:大写字母

31、和小写字母含义不同。标识符不能使用 C+中的关键字,不能包含相邻的下画线,也不能以下画线后跟一个大写字母开始。23.关键字 unsigned 不能修饰的类型是_。(分数:2.50)A.charB.intC.float D.long int解析:解析 unsigned:修饰整型数据,无符号数据类型。24.有如下程序: #inchldeiostream using namespace std; int main() char a; cina; if(a=“*“)cout“*“endl; else cout“#“endl; return 0; 输入字符+时,程序的运行结果是_。(分数:2.50)A.

32、*B.#C.*#D.无输出 解析:解析 函数在执行过程中,没有定义一个有效的返回值类型,所以程序运行结果为无输出。25.下列对一维数组 a 的定义中,语法正确的是_。(分数:2.50)A.int a(10);B.int n=7.an;C.int n; cinn; int a;D.const int size=10; int asize; 解析:解析 数组属于自定义数据类型,因此在使用之前首先要进行类型声明。声明一个数组应该包括以下几个方面:(1)确定数组的名称;(2)确定数组元素的类型;(3)确定数组的结构(包括数组维数,每一维的大小等)。数组类型声明的一般形式为:数据类型标示符常量表达式 1

33、常量表达式 2。26.假设函数 fun 已经定义,其原型为“void fun(int a, int b=7, char * p=“*“);”,下列函数调用中错误的是_。(分数:2.50)A.fun(5)B.fun(5, 8)C.fun(6, “#“) D.fun(0, 0, “=“)解析:解析 函数 fun 的功能是:将 s 所指字符串中下标为偶数同时 ASCII 值为奇数的字符删除。27.已知函数 print()没有返回值,如果在类中将之声明为常成员函数,正确的是_。(分数:2.50)A.void print() const B.const void print()C.void const

34、print()D.void print(const)解析:解析 函数的返回值其实很简单,可以把函数看成一个具备某种功能的黑盒子,调用函数的时候,就相当于给它传入函数要求的数据,然后函数开始按它的功能运行,最后输出一个运行结果,这个输出的结果是返回值。只是不同的函数实现不同的功能。调用函数的时候传入的称为参数,传入的参数要严格地按函数的定义要求,如参数的类型。如果有多个参数还必须按每个参数的顺序来传入。当然函数不一定要返回一个值,可以返回空值。28.已知基类 Employee 只有一个构造函数,其定义如下: Employee:Employee(int n):id(n) Manager 是 Emp

35、loyee 的派生类,则下列对 Manager 的构造函数的定义中,正确的是_。(分数:2.50)A.Managaer:Manager(int n):id(n)B.Managaer:Manager(int n)id=n;C.Managaer:Manager(int n):Employee(n) D.Managaer:Manager(int n)Employee(n);解析:解析 派生类的数据成员由所有基类的数据成员与派生类新增的数据成员共同组成,如果派生类新增成员中包括其他类的对象(子对象),派生类的数据成员中实际上还间接包括了这些对象的数据成员。因此,构造派生类的对象时,必须对基类数据成员、

36、新增数据成员和成员对象的数据成员进行初始化。派生类的构造函数必须要以合适的初值作为参数,隐含调用基类和新增对象成员的构造函数,来初始化它们各自的数据成员,然后再加入新的语句对新增普通数据成员进行初始化。 派生类构造函数的一般格式如下: 派生类名:派生类名(参数表):基类名 1(参数表 1), , 基类名 n(参数表 n), 子对象名 1(参数表 n+1), , 子对象名 m( 派生类构造函数体 /派生类新增成员的初始化 29.已知将运算符“+”和“*”作为 Complex 的成员函数重载,设 c1 和 c2 是类 complex 的对象,则表达式 c1+c2*c1 等价于_。(分数:2.50)

37、A.c1.operaror*(c2.operator+(c1)B.c1.operator+(c2.operator*(c1) C.c1.operator*(c1.operator+(c2)D.c2.operator+(c1.operator*(c1)解析:解析 在将运算符函数重载为成员函数后,如果出现含该运算符的表达式,如 c1+c2,编译系统把它解释为 c1.operator+(c2),即通过对象 c1 调用运算符重载函数,并以表达式中第二个参数(运算符右侧的类对象c2)作为函数实参。运算符重载函数的返回值是 Complex 类型,返回值是复数 c1 和 c2 之和(Complex(c1.r

38、eal+c2.real, c1.imag+c2.imag)。30.下列类模板的定义中语法格式错误的是_。(分数:2.50)A.templateclass Tclass Buffer/*/);B.templatetypenameclass Buffer/*/;C.templateclass T1, class T2class Buffer/*/;D.templateTclass Buffer/*/; 解析:解析 template 是一个声叫模板的关键字,表示声明一个模板关键字 class 不能省略,如果类型形参多余一个,每个形参前都要加 class类型形参表,可以包含基本数据类型,也可以包含类类

39、型。形式:Templateclass 或者也可以用 typename T。31.在 C+中既可以用于文件输入又可以用于文件输出的流类是_。(分数:2.50)A.fstreamB.ifstreamC.ofstreamD.iostream 解析:解析 ofstream 类对象打开一个用于输出的文件,即被写入的文件,ifstream 类对象打开一个用于输入的文件,即微读取的文件,fstream 类对象打开一个既可以输出又可以输入的文件。iostream 负责双向数据流的输入/输出操作。32.有如下类定义: class MyClass int b; char a; double c; public:

40、MyClass():c(0.0), b(0), a(“,“) 创建这个类的对象时,数据成员的初始化顺序是_。(分数:2.50)A.a, b, cB.c, b, a C.b, a, cD.c, a, b解析:解析 C+为类中提供类成员的初始化列表类对象的构造顺序是这样的:分配内存,调用构造函数时,隐式/显示的初始化各数据成员;进入构造函数后在构造函数中执行一般计算;类里而的任何成员变量在定义时是不能初始化的;一般的数据成员可以在构造函数中初始化;const 数据成员必须在构造函数的初始化列表中初始化;static 要在类的定义外面仞始化;数组成员是不能在初始化列表里初始化的;不能给数组指定明显的

41、初始化。33.有如下类定义: class MyClass int x; public: MyClass():x(0), y(0) int GetX()return x; void SetX(int xx)x=xx; int y; ; 已知 obj 是类 MyClass 的对象,下列语句中违反类成员访问控制权限的是_。(分数:2.50)A.obj.x; B.obj.y;C.obj.GetX();D.obj.SetX(0);解析:解析 控制外界是否可访问:每一个类都能访问自己的成员集合。每一个类,可被访问的只有public 成员集合。即不论在什么地方使用该类(或实例化对象)时,只能访问 publi

42、c 成员。控制子类是否可继承:继承时基类的 pulic、protected 成员集合扩充到子类的成员集合中。过滤子类继承时的权限:继承后,成员扩充到子类的成员集合后的最终访问权限的设置。以继承时的访问权限控制(public、protected、private)过滤扩充的成员原来的访问权限,作为最终的访问权限。34.有如下类定义: class Test char a; const char b; public: Test(char c)a=c; b=c; /第一行 void f(char a)constthis-a=a; /第二行 void g(char b)this-b=b;/第三行 char

43、 h()constreturn a; /第四行 ; 编译时没有错误的行是_。(分数:2.50)A.第一行B.第二行C.第三行 D.第四行解析:解析 本题考查的是类的声明和定义。35.有如下程序: #includeiostream using namespace std; class A public: A()cout“A“; A()cout“C“; ; class B:public A public: B()cout“G“; B()cout“T“; ; int main() B obj; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.GATCB.AGTC C.GACTD

44、.AGCT解析:解析 本题考查的是字符串的定义与运算。36.有如下程序: #includeiostream using namespace std; class Base public: void fun()cout“B“; Class Derived:public Base public: void fun()_cout“D“; ; int main() Derived d; d.fun(); return 0; 若程序的输出结果是 BD,则画线处缺失的部分是_。(分数:2.50)A.fun();B.Base.fun();C.Base:fun();D.Base-fun(); 解析:解析 本题

45、考查的内容是函数重载。在 C+中,编译时的多态性是通过模板或函数重载实现的。37.有如下程序: #includeiostream using namespace std; class B public: virtual void f()cout“B“; void g()cout“B“; ; class D:public B public: void f()cout“D“; void g()cout“D“; ; void h(B* p)p-f(); p-g(); int main() D obj; h( return 0; 运行这个程序的输出结果是_。(分数:2.50)A.DDB.BBC.BDD

46、.DB 解析:解析 本题考查的是构造函数和虚函数的重载。38.有如下程序: #includeiostream #includestring using namespace std; class MyString public: char str80; MyString(const char*s)strepy(str s); MyString return*this; ; ostream int main() MyString x(“abc“), y(“cde“); cout(x+=y)endl; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.abcB.cdeC.abcdeD.abccde 解析:解析 本题考查的是字符串的运算。39.有如下程序: #includeiostream #includeiomanip using namespace std; int main() coutsetfill(“#“)setw(4)“OK“123endl; return 0; 运行这个程序的输出结果是

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1