【计算机类职业资格】C++语言笔试-5及答案解析.doc

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

1、C+语言笔试-5 及答案解析(总分:80.00,做题时间:90 分钟)一、单项选择题(总题数:40,分数:80.00)1.下面关于算法的叙述中,正确的是( )。A) 算法的执行效率与数据的存储结构无关B) 算法的有穷性是指算法必须能在执行有限个步骤之后终止C) 算法的空间复杂度是指算法程序中指令(或语句)的条数D) 以上三种描述都正确(分数:2.00)A.B.C.D.2.下列二叉树描述中,正确的是( )。A) 任何一棵二又树必须有一个度为 2 的结点B) 二叉树的度可以小于 2C) 非空二叉树有 0 个或 1 个根结点D) 至少有 2 个根结点(分数:2.00)A.B.C.D.3.如果进栈序列

2、为 A,B,C,D,则可能的出栈序列是( )。A) C,A,D,B B) B,D,C,AC) C,D,A,B D) 任意顺序(分数:2.00)A.B.C.D.4.下列各选项中,不属于序言性注释的是( )。A) 程序标题 B) 程序设计者C) 主要算法 D) 数据状态(分数:2.00)A.B.C.D.5.下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。A) 内模式 B) 外模式C) 概念模式 D) 逻辑模式(分数:2.00)A.B.C.D.6.下列叙述中,不属于软件需求规格说明书的作用的是( )。A) 便于用户,开发人员进行理解和交流B) 反映出用户问题的结构,可以作为软件开发工

3、作的基础和依据C) 作为确认测试和验收的依据D) 便于开发人员进行需求分析(分数:2.00)A.B.C.D.7.下列不属于软件工程 3 个要素的是( )。A) 工具 B) 过程 C) 方法 D) 环境(分数:2.00)A.B.C.D.8.数据库系统在其内部具有 3 级模式,用来描述数据库中全体数据的全局逻辑结构和特性的是( )。A) 外模式 B) 概念模式C) 内模式 D) 存储模式(分数:2.00)A.B.C.D.9.将 E-R 图转换到关系模式时,实体与联系都可以表示成( )。A) 属性 B) 关系 C) 记录 D) 码(分数:2.00)A.B.C.D.10.某二叉树中度为 2 的结点有

4、10 个,则该二叉树中有( )个叶子结点。A) 9 B) 10 C) 11 D) 12(分数:2.00)A.B.C.D.11.有如下程序:#includeiostreamusing namespace std;class Apublic:A() cout“A“; A() cout“A“;class B:public AA*p;public:B() cout“B“;p=new A; B() cout“B“;delete p;int main()B obj;return 0;执行这个程序的输出结果是( )A) BAAABA B) ABABAAC) BAABAA D) ABAABA(分数:2.00)

5、A.B.C.D.12.若有以下程序:#includeiostreamusing namespace std;class Apublic:A(int i,int j)a=i;b=j;void move(int x,int y)a+=x;b+=y;void show()couta“,“bend1;private:int a,b;class B:private Apublic:B(int i,int j):A(i,j) void fun()move(3,5);void f1()A:show();int main()B d(3,4);d.fun();d.f1();return ();执行程序后的结果是

6、( )A) 3,4 B) 6,8 C) 6,9 D) 4,3(分数:2.00)A.B.C.D.13.有如需程序:#includeiostreamusing namespace std;class Testpublic:Test() n+=2;Test() n-=3;static int getNum() return n; private:static int n;int Test:n=1;int main()Test*p=new Test;delete p;cout“n=“Test:getNum()end1;return 0;执行后的输出结果是( )。A) n=0 B) n=1C) n=2

7、D) n=3(分数:2.00)A.B.C.D.14.假定 MyClass 为一个类,那么下列的函数说明中,( )为该类的析构函数。A) voidMyClass(); B) MyClass(int n);C) MyClass(); D) MyClass();(分数:2.00)A.B.C.D.15.下列情况中,不会调用拷贝构造函数的是( )。A) 用一个对象去初始化同一类的另一个新对象时B) 将类的一个对象赋值给该类的另一个对象时C) 函数的形参是类的对象,调用函数进行形参和实参结合时D) 函数的返回值是类的对象,函数执行返回调用时(分数:2.00)A.B.C.D.16.下列有关拷贝构造函数的描述

8、中错误的是( )。A) 拷贝构造函数是一种构造函数B) 拷贝构造函数与一般的构造函数一样,可以设置多个形参C) 每一个类中都必须有一个拷贝构造函数D) 拷贝构造函数的功能是用一个已知对象去初始化一个正在创建的对象(分数:2.00)A.B.C.D.17.类 MyClass 的定义如下,若要对 value 赋值,则下面语句正确的是( )。class MyClasspublic:MyClass()MyClass(int i) value=new int(i);int*value;A) MyClass my;my.value=10;B) MyClass my;*my.value=10;C) MyCla

9、ss my;my.*value=10;D) MyClass my(10);(分数:2.00)A.B.C.D.18.有如下程序:#includeusing namespace std;int s=0;class samplestatic int n;public:sample(int i)n=i;static void add()s+=n;int sample:n=0;int main()sample a(2),b(5);sample:add();coutsend1;return 0;程序运行后的输出结果是( )。A) 2 B) 5 C) 7 D) 3(分数:2.00)A.B.C.D.19.下列

10、运算符中不能在 C+中重载的是( )。A) ?: B) + C) - D) =(分数:2.00)A.B.C.D.20.下列重载函数中,正确的是( )。A) void fun(int a, float b);void fun(int C,float d)B) void fun(int a,float b);void fun(float a,int b)C) float fun(int a,float b);int fun(int b,float a)D) int fun(int a,int b);float fun(int a,int b)(分数:2.00)A.B.C.D.21.以下不正确的是(

11、 )。A) 语句 for(i=0; ;i+)表示无限循环B) for(; ;)表示无限循环C) for()表示无限循环D) while(1)表示无限循环(分数:2.00)A.B.C.D.22.有如下程序:int x=3;dox-=2;coutx;while(!(-x);执行这个程序的输出结果是( )。A) 1 B) 30 C) 1-2 D) 死循环(分数:2.00)A.B.C.D.23.若有以下定义,说法错误的是( )。int a=100,*p=A) 声明变量 p,其中*表示 p 是一个指针变量B) 变量 p 经初始化,获得变量 a 的地址C) 变量 p 只可以指向一个整型变量D) 变量 p

12、的值为 100(分数:2.00)A.B.C.D.24.若已定义int a=0,1,2,3,4,5,6,7,8,9),*p=a,i;其中 (分数:2.00)A.B.C.D.25.程序执行后的输出结果是( )。#include iostream.hvoid main()char flag=c ;switch(flag)case a :cout“1“end1 ;case b :cout“2“end1 ; break;case c : cout “3“end1 ;default : cout “4“end1 ; break;A) 12 B) 23 C) 34 D) 45(分数:2.00)A.B.C.D

13、.26.有如下程序:#include iostreamusing namespace std;class sampleprivate:int x,y;public:sample(int i,int j)x=i;y=j;void disp()cout“disp 1 “end1;void disp()constcout“disp2“end1;int main()const sample a(1,2);a.disp();return ();该程序运行后的输出结果是( )。A) disp 1 B) disp2C) disp1 disp2 D) 程序编译时出错(分数:2.00)A.B.C.D.27.有如

14、下类的定义,横线处的语句是( )。class TestClass_ int x,y;public:TestClass (int a=0,int b=0)x=a;y=b;static void change()y-=10;y-=10;A) public B) privateC) static D) protected(分数:2.00)A.B.C.D.28.有如下程序:#includeiostreamusing namespace std;class TestClassprotected:TestClass () coutx;TestClass (char c) coutc; ;class Tes

15、tClass 1 :public TestClasspublic:TestClass 1 (char c) coutc;int main() TestClass1 d1 (y);return 0;执行这个程序,屏幕上将显示输出( )。A) y B) yx C) xy D) yy(分数:2.00)A.B.C.D.29.下面是关于派生类声明的开始部分,其中正确的是( )。A) class virtual B:public AB) virtual class B:public AC) class B:public A virtualD) class B:virtual public A(分数:2.0

16、0)A.B.C.D.30.在函数中,可以用 auto、extern、register 和 static 这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。A) auto B) externC) register D) static(分数:2.00)A.B.C.D.31.若有以下程序:#includeiostreamusing namespace std;class TestClasspublic:void who() cout“TestClass“end1;class TestClass 1 :public TestClasspublic:void who

17、() cout“TestClass 1“end1;int main()TestClass *p;TestClass 1 obj 1;p=p-who();return 0;则该程序运行后的输出结果是( )。A) TestClass 1 B) TestClassC) 0 D) 无输出(分数:2.00)A.B.C.D.32.下列有关继承和派生的叙述中,正确的是( )。A) 如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B) 派生类的成员函数可以访问基类的所有成员C) 基类对象可以赋值给派生类对象D) 如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类(分数:2.00)A

18、.B.C.D.33.下面叙述错误的是( )。A) 派生类可以使用 private 派生B) 对基类成员的访问必须是无二义性的C) 基类成员的访问能力在派生类中维持不变D) 赋值兼容规则也适用于多继承的组合(分数:2.00)A.B.C.D.34.下列程序的输出结果为 2,横线处应添加语句( )。#includeiostreamusing namespace std;class TestClass 1punic:void fun() cout 1 ; ;class TestClass2:public TestClass 1public:void fun() cout2; ;int main()Te

19、stClass1 *p=new TestClass2;p-fun();delete p;return 0;A) public B) privateC) virtual D) protected(分数:2.00)A.B.C.D.35.要是程序执行后的输出结果为 ABCD, 应在横线处添加的语句( )。#includeiostreamusing namespace std;class Apublic:A() coutA;class B:_public:B() coutB;class C:virtual public Apublic:C() coutC; ;class D:public B,publ

20、ic Cpublic:D() coutD; ;void main()D obj;A) public A B) private AC) protected A D) virtual public A(分数:2.00)A.B.C.D.36.下面的描述中,正确的是( )。A) virtual 可以用来声明虚函数B) 含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类C) 即使基类的构造函数没有参数,派生类也必须建立构造函数D) 静态数据成员可以通过成员初始化列表来初始化(分数:2.00)A.B.C.D.37.若要把函数 void fun()定义为 TestClass 的友元函数,则应该在类 Te

21、stClass 的定义中加入的语句是( )。A) voidfriendfun() B) friendfun()C) friend void fun() D) TestClass void fun()(分数:2.00)A.B.C.D.38.已知递归函数 fun 的定义如下:intfun(intn)if(n=1)return 1;/递归结束情况else return n*fun(n-2);/递归则函数调用语句 fun(5)的返回值是( )。A) 5 B) 12 C) 15 D) 30(分数:2.00)A.B.C.D.39.字面常量 42、4.2、42L 的数据类型分别是( )。A) long,do

22、uble,int B) long,float,intC) int,double,long D) int,float,long(分数:2.00)A.B.C.D.40.下列有关内联函数的叙述中,正确的是( )。A) 内联函数在调用时发生控制转移B) 内联函数必须通过关键字 inline 来定义C) 内联函数是通过编译器来实现的D) 内联函数函数体的最后一条语句必须是 return 语句(分数:2.00)A.B.C.D.C+语言笔试-5 答案解析(总分:80.00,做题时间:90 分钟)一、单项选择题(总题数:40,分数:80.00)1.下面关于算法的叙述中,正确的是( )。A) 算法的执行效率与数

23、据的存储结构无关B) 算法的有穷性是指算法必须能在执行有限个步骤之后终止C) 算法的空间复杂度是指算法程序中指令(或语句)的条数D) 以上三种描述都正确(分数:2.00)A.B. C.D.解析:解析 算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤以后结束。2.下列二叉树描述中,正确的是( )。A) 任何一棵二又树必须有一个度为 2 的结点B) 二叉树的度可以小于 2C) 非空二叉树有 0 个或 1 个根结点D) 至少有 2 个根结点(分数:2.00)A.B. C.D.解析:解析 二叉树是由 n0 个结点的有限集合构成,此集合或者为空集,或

24、者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。二叉树可以是空集合,根可以有空的左子树或空的右子树。二叉树不是树的特殊情况,它们是两个概念。二叉树具有如下两个特点:非空二叉树只有一个根结点。每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。3.如果进栈序列为 A,B,C,D,则可能的出栈序列是( )。A) C,A,D,B B) B,D,C,AC) C,D,A,B D) 任意顺序(分数:2.00)A.B. C.D.解析:解析 栈的操作原则为后进先出。选项 B) 中出栈顺序可按“A 进,B 进,B 出,C 进,D 进,D 出,C 出,A 出”实现。4.下列各选项中,不

25、属于序言性注释的是( )。A) 程序标题 B) 程序设计者C) 主要算法 D) 数据状态(分数:2.00)A.B.C.D. 解析:解析 注释一般为序言性注释和功能性注释。序言性注释常位于程序开头部分,它包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期及修改日期等。功能性注释一般嵌在源程序体之中,用于描述其后的语句或程序的主要功能。5.下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。A) 内模式 B) 外模式C) 概念模式 D) 逻辑模式(分数:2.00)A. B.C.D.解析:解析 数据库管理系统的三级模式结构由外模式、模式和内模

26、式组成。外模式,或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式,或存储模式,或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。6.下列叙述中,不属于软件需求规格说明书的作用的是( )。A) 便于用户,开发人员进行理解和交流B) 反映出用户问题的结构,可以作为软件开发工作的基础和依据C) 作为确认测试和验收的依据D) 便于开发人员进行需求分析(分数:2.00)A.B.C.D. 解析:解析 软件需求规格说明

27、书有以下几个方面的作用:便于用户、开发人员进行理解和交流。反映出用户问题的结构,可以作为软件开发工作的基础和依据。作为确认测试和验收的依据。7.下列不属于软件工程 3 个要素的是( )。A) 工具 B) 过程 C) 方法 D) 环境(分数:2.00)A.B.C.D. 解析:解析 软件工程包括 3 个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。8.数据库系统在其内部具有 3 级模式,用来描述数据库中全体数据的全局逻辑结构和特性的是( )。A) 外模式 B) 概念模式C) 内模式 D) 存储模式(分数:2.

28、00)A.B. C.D.解析:解析 概念模式,也称逻辑模式,是对数据库系统中全局数据逻辑结构的描述,是全体用户应用公共数据视图。它不涉及具体的硬件环境与平台,与具体的软件环境也无关。9.将 E-R 图转换到关系模式时,实体与联系都可以表示成( )。A) 属性 B) 关系 C) 记录 D) 码(分数:2.00)A.B. C.D.解析:解析 E-R 图由实体、实体的属性和实体之间的联系 3 个要素组成,关系模型的逻辑结构是一组关系模式的集合,将 E-R 图转换为关系模型:将实体、实体的属性和实体之间的联系转化为关系模式。如下表所示。表 E-R 模型与关系间的比较表E-R 模型 关系 E-R 模型

29、关系属性 属性 实体集 关系实体 元组 联系 关系10.某二叉树中度为 2 的结点有 10 个,则该二叉树中有( )个叶子结点。A) 9 B) 10 C) 11 D) 12(分数:2.00)A.B.C. D.解析:解析 根据二叉树的性质 3:对任何一棵二叉树,度为 0 的结点(即叶子结点)总是比度为 2 的结点多一个。11.有如下程序:#includeiostreamusing namespace std;class Apublic:A() cout“A“; A() cout“A“;class B:public AA*p;public:B() cout“B“;p=new A; B() cout

30、“B“;delete p;int main()B obj;return 0;执行这个程序的输出结果是( )A) BAAABA B) ABABAAC) BAABAA D) ABAABA(分数:2.00)A.B. C.D.解析:解析 此题考查的是类的构造函数和析构函数。派生类构造函数的执行顺序为:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。因此本题中,首先调用基类构造函数输出 A,然后调用子对象的构造函数输出 B,p=new A 再调用类 A 的构造函数输出 A;析构函数的调用顺序和构造函数的调用

31、顺序相反。12.若有以下程序:#includeiostreamusing namespace std;class Apublic:A(int i,int j)a=i;b=j;void move(int x,int y)a+=x;b+=y;void show()couta“,“bend1;private:int a,b;class B:private Apublic:B(int i,int j):A(i,j) void fun()move(3,5);void f1()A:show();int main()B d(3,4);d.fun();d.f1();return ();执行程序后的结果是( )

32、A) 3,4 B) 6,8 C) 6,9 D) 4,3(分数:2.00)A.B.C. D.解析:解析 此题的执行过程如下:首先 Bd(3,4);语句调用 B 类的构造函数:B(int i,im j),B 的构造函数中调用基类 A 的构造函数,使得 a=3,b=4;d.fun()会调用函数 move(3,5),使得(3,4)和(3,5)的对应部分分别相加,最后输出 6,9。13.有如需程序:#includeiostreamusing namespace std;class Testpublic:Test() n+=2;Test() n-=3;static int getNum() return

33、n; private:static int n;int Test:n=1;int main()Test*p=new Test;delete p;cout“n=“Test:getNum()end1;return 0;执行后的输出结果是( )。A) n=0 B) n=1C) n=2 D) n=3(分数:2.00)A. B.C.D.解析:解析 语句 Test*p=new Test;会调用类的构造函数 Test()n+=2;,使 n 的值由原来的 1 变为3,然后 delete p 调用类的析构函数Test() n-=3;,因为 n 是 static 型变量,所以会在 3 的基础上减 3 使得输出结果

34、为 0。14.假定 MyClass 为一个类,那么下列的函数说明中,( )为该类的析构函数。A) voidMyClass(); B) MyClass(int n);C) MyClass(); D) MyClass();(分数:2.00)A.B.C.D. 解析:解析 C+语言中析构函数为符号“”加类名,且析构函数没有返回值和参数,故前不加 void关键字。所以正确的形式应该是MyClass()。15.下列情况中,不会调用拷贝构造函数的是( )。A) 用一个对象去初始化同一类的另一个新对象时B) 将类的一个对象赋值给该类的另一个对象时C) 函数的形参是类的对象,调用函数进行形参和实参结合时D) 函

35、数的返回值是类的对象,函数执行返回调用时(分数:2.00)A.B. C.D.解析:解析 拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它的一般格式是:类名:类名(const 类名int*value;A) MyClass my;my.value=10;B) MyClass my;*my.value=10;C) MyClass my;my.*value=10;D) MyClass my(10);(分数:2.00)A.B.C.D. 解析:解析 因题目中定义的指针 value 是指向变量 i 的,所以直接利用语句。MyClass(int i) value=newin

36、t(i);对 value 进行赋值即可。18.有如下程序:#includeusing namespace std;int s=0;class samplestatic int n;public:sample(int i)n=i;static void add()s+=n;int sample:n=0;int main()sample a(2),b(5);sample:add();coutsend1;return 0;程序运行后的输出结果是( )。A) 2 B) 5 C) 7 D) 3(分数:2.00)A.B. C.D.解析:解析 执行语句“sample a(2),b(5)”;的结果是使 n 的

37、值最终变为 5,sample:add()语句调用函数 staticvoid add(),使得 s=s+n=5。19.下列运算符中不能在 C+中重载的是( )。A) ?: B) + C) - D) =(分数:2.00)A. B.C.D.解析:解析 此题考查的是运算符的有关概念。运算符重载是针对 C+原有运算符进行的,不能通过重载创造新的运算符;除了.、.*、_*、:、?:这五个运算符之外,其他运算符都可以重载。20.下列重载函数中,正确的是( )。A) void fun(int a, float b);void fun(int C,float d)B) void fun(int a,float

38、b);void fun(float a,int b)C) float fun(int a,float b);int fun(int b,float a)D) int fun(int a,int b);float fun(int a,int b)(分数:2.00)A.B. C.D.解析:解析 所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。21.以下不正确的是( )。A) 语句 for(i=0; ;i+)表示无限循环B) for(; ;)表示无限循环C) for()表示无限循环D) while(1)表示无限循环(分数:2.00)A

39、.B.C. D.解析:解析 选项 C)是一个错误的 for 语句格式,for()语句中三个表达式可以省略。但是两个分号(;)不能省略。22.有如下程序:int x=3;dox-=2;coutx;while(!(-x);执行这个程序的输出结果是( )。A) 1 B) 30 C) 1-2 D) 死循环(分数:2.00)A.B.C. D.解析:解析 第一次循环输出 1,第二次循环输出是-2。在输出二次循环后!(-x)为 0 条件不满足。停止循环。23.若有以下定义,说法错误的是( )。int a=100,*p=A) 声明变量 p,其中*表示 p 是一个指针变量B) 变量 p 经初始化,获得变量 a

40、的地址C) 变量 p 只可以指向一个整型变量D) 变量 p 的值为 100(分数:2.00)A.B.C.D. 解析:解析 p 是一个指针,用来存储 a 变量的地址,而 100 是存储在该地址的一个值用 p 表示的为-p。24.若已定义int a=0,1,2,3,4,5,6,7,8,9),*p=a,i;其中 (分数:2.00)A.B.C.D. 解析:解析 数组有 N 个元素,则数组元素引用为 a(0)a(N-1),共计 N 个,没有 a(10)这个元素,最后的元素是 a(9)。25.程序执行后的输出结果是( )。#include iostream.hvoid main()char flag=c

41、;switch(flag)case a :cout“1“end1 ;case b :cout“2“end1 ; break;case c : cout “3“end1 ;default : cout “4“end1 ; break;A) 12 B) 23 C) 34 D) 45(分数:2.00)A.B.C. D.解析:解析 因为 flag=c,所以执行 cout“3“end1 语句,由于没有 break 短语,所以继续执行“cout“4“end1;break;”,语句输出 4。26.有如下程序:#include iostreamusing namespace std;class samplep

42、rivate:int x,y;public:sample(int i,int j)x=i;y=j;void disp()cout“disp 1 “end1;void disp()constcout“disp2“end1;int main()const sample a(1,2);a.disp();return ();该程序运行后的输出结果是( )。A) disp 1 B) disp2C) disp1 disp2 D) 程序编译时出错(分数:2.00)A.B. C.D.解析:解析 因为对象 a 被定义为常对象,所以 a.disp()语句调用的是类的常成员函数 void disp()const,输

43、出的结果是 disp2。27.有如下类的定义,横线处的语句是( )。class TestClass_ int x,y;public:TestClass (int a=0,int b=0)x=a;y=b;static void change()y-=10;y-=10;A) public B) privateC) static D) protected(分数:2.00)A.B.C. D.解析:解析 因为 static void change()为静态函数,静态函数主要访问静态数据,不访问非静态数据。所以函数中访问了数据 y,所以下划线的数据类型应对应为 static。28.有如下程序:#inclu

44、deiostreamusing namespace std;class TestClassprotected:TestClass () coutx;TestClass (char c) coutc; ;class TestClass 1 :public TestClasspublic:TestClass 1 (char c) coutc;int main() TestClass1 d1 (y);return 0;执行这个程序,屏幕上将显示输出( )。A) y B) yx C) xy D) yy(分数:2.00)A.B.C. D.解析:解析 程序中的类 TestClass 为基类,TestCla

45、ss1 为 TestClass 的派生类。由 main 主函数入手,定义 TestClass1 类型的对象 d1,参数值为y。TestClass1 类继承 TestClass,所以主函数中“TestClassl d1(y);”语句首先调用调用基类中的“TestClass()cout,x;”输出 x,然后调用“TestClass1(char c)coutc;”输出 y,即答案为“xy”。29.下面是关于派生类声明的开始部分,其中正确的是( )。A) class virtual B:public AB) virtual class B:public AC) class B:public A vir

46、tualD) class B:virtual public A(分数:2.00)A.B.C.D. 解析:解析 声明派生类的一般形式为:class 派生类名:继承方式基类名。其中继承方式包括:public,Drivate,protected,而 virtual 为 C+中的关键字。虚函数的使用方法是在基类用 virtual 声明成员函数为虚函数。30.在函数中,可以用 auto、extern、register 和 static 这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。A) auto B) externC) register D) static(分数

47、:2.00)A. B.C.D.解析:解析 此题考查的是存储类型。C+语言变量的存储类型分为如下几种类型:auto函数内部的局部变量;static静态存储分配;extern-全局变量;register变量存储在硬件寄存器中。31.若有以下程序:#includeiostreamusing namespace std;class TestClasspublic:void who() cout“TestClass“end1;class TestClass 1 :public TestClasspublic:void who() cout“TestClass 1“end1;int main()TestC

48、lass *p;TestClass 1 obj 1;p=p-who();return 0;则该程序运行后的输出结果是( )。A) TestClass 1 B) TestClassC) 0 D) 无输出(分数:2.00)A.B. C.D.解析:解析 程序中的 TestClas1 为 TestClass 的派生类,主函数 main 中定义 TestClass 对象*p,TestClass1 对象 obj1,然后 p 引用 obj1,执行 p-who()则是调用基类中的 who 函数,输出TestClass。32.下列有关继承和派生的叙述中,正确的是( )。A) 如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B) 派生类的成员函数可以访问基类的所有成员C) 基类对象可以赋值给派生类对象D) 如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类(分数:2.00)A.B.C.D. 解析:解析 如果派生类私有继承基类,不能访问

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

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

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