ImageVerifierCode 换一换
格式:DOC , 页数:19 ,大小:73.50KB ,
资源ID:1324272      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1324272.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】二级C++分类模拟274及答案解析.doc)为本站会员(amazingpat195)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】二级C++分类模拟274及答案解析.doc

1、二级 C+分类模拟 274及答案解析(总分:77.50,做题时间:90 分钟)一、选择题(总题数:40,分数:77.50)1.有如下程序: #includeiostream using namespace std; class TlestClass int n; public: TestClass(int k):n(k) int get()return n; int get()constreturn n+1; ; int main() TestClass p(5); const TestClass q(6); coutp.get()q.get(); return 0; 执行后的输出结果是_。(

2、分数:2.50)A.55B.57C.75D.772.在“文件包含”预处理语句的使用形式中,当#include 后面的文件名用”括起时,寻找被包含文件的方式是(分数:2.00)A.直接按系统设定的标准方式搜索目录B.先在源程序所在的目录搜索,再按系统设定的标准方式搜索C.仅仅搜索源程序所在目录D.仅仅搜索当前目录3.已知在一个类体中包含如下函数原型:VOLUMEOPER ATOR-(VOLUME)const;,下列关于这个函数的叙述中,错误的是_。(分数:1.00)A.这是运算符一的重载运算符函数B.这个函数所重载的运算符是一个一元运算符C.这是一个成员函数D.这个函数不改变类的任何数据成员的值

3、4.若 MyClass是一个类名,且有如下语句序列 MyClass c1,*c2; MyClass *c3=new MyClass; MyClass 上面的语句序列所定义的类对象的个数是_。(分数:2.00)A.1B.2C.3D.45.下列关于函数模板的描述中,正确的是_。(分数:1.00)A.函数模板是一个实例函数B.使用函数模板定义的函数没有返回类型C.函数模板的类型参数与函数的参数相同D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数6.以下程序的输出结果是 _ 。 #includeiostream.h void func(char*m) +m: cout*mend1; voi

4、d main() static char*a=“MORNING“,“AFTERTOON“,“EVENING“; char*n: n=a; func(n); (分数:1.00)A.为空B.MORNINGC.AFTERTOOND.EVENING7.有如下程序: #includeiostream using namespace std; class B public: virtual void show( )cout“B“; ; class D:public B public: void show( )cout“D“; ; void funl(B*ptr)ptr-show( ); void fun2

5、(B class B:public A public: void func1()cout“class B fune 1“endl; virtual void func2()cout“class B func 2“endl; ; 下面正确的叙述是()。(分数:1.00)A.A:func2()和 B:func1()都是虚函数B.A:func2()和 B:func1()都不是虚函数C.B:funcl()是虚函数,而 A:func2()不是虚函数D.B:func1()不是虚函数,而 A:func2()是虚函数9.若要对类 BigNumber中重载的类型转换运算符 long进行声明,下列选项中正确的是_

6、。(分数:2.50)A.operator long()const;B.operator long(BigNumber);C.long operator long()const;D.long operator long(BigNumber);10.在下面程序中,编译时出现错误的是 _。 Class A /(1) public: /(2) A() f(); /(3) void B() f(); virtual void f()const=0; /(4) ;(分数:2.00)A.(1)B.(2)C.(3)D.(4)11.将 x+y*z中的“+”用成员函数重载,“*”用友元函数重载应写为_。(分数:2

7、.50)A.operator+(operator*(y,z)B.operator+(operator*(y,z)C.operator+(x*(y,z)D.x+(operator*(y,z)12.有如下函数定义: void func(int a,intb+; 若执行代码段: int x=0,y=1 func(x,y); 则变量 x和 y值分别是_。(分数:2.50)A.0和 1B.1和 1C.0和 2D.1和 213.在重载一个运算符函数时,其参数表中没有任何参数,这说明该运算符是_。(分数:3.00)A.一元非成员运算符B.一元成员运算符C.二元非成员运算符D.二元成员运算符14.对于循环队列

8、,下列叙述中正确的是_。(分数:2.50)A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针一定小于队尾指针D.队头指针可以大于队尾指针,也可以小于队尾指针15.编译时的多态性可以通过使用 _ 获得。(分数:1.00)A.虚函数和指针B.重载函数和析构函数C.虚函数和对象D.虚函数和引用16.存取指针所指的值时,采用的运算符是_。(分数:2.50)A.#B.C.%D.*17.在开发一个 C+程序的整个过程中,第 3个步骤为_。(分数:2.50)A.链接B.运行C.编辑D.编译18.单个用户使用的数据视图的描述称为(分数:1.00)A.外模式B.概念模式C.内模式D.存储模式19.

9、有如下类定义: class Point private: static int how_many; ; _how_many=0; 要初始化 Point类的静态成员 how_many,下画线处应填入的内容是_。(分数:1.00)A.intB.static intC.int Point:D.static int Point:20.有如下程序: #includeiostream using namespace std; class Media public: void Name(); void Show(); protected: int page; ; class Book:private Med

10、ia public: void Print() coutpageendl; void Show()Media:Show();) / ; int main() Book Bible; Bible.Name(); / Bible.Print(); / Bible.Show(); / return 0; 编译时有错误的是_。(分数:2.00)A.语句B.语句C.语句D.语句21.下列程序的运行结果为_。 # includeiostream.h templateclass TT class FF TT a1,a2,a3; public: FF(TT b1,TT b2,TT b3)a1=b1;a2=b2

11、;a3=b3; TT Sum()return a1+a2+a3;); void main() FFintx(int(1.1),2.3),y(int(4.2),5,6); coutx.Sum()“y.Sum()encIl;(分数:2.50)A.6.1 15.2B.6 15C.6 15.2D.6.1 1522.有如下程序: class Base public: int data; ; class Derivedl: public Base ; class Derived2: protected Base ; int main() Derivedl d1; Derived2 d2; d1. data

12、=0;/ d2. data=0;/ return 0; 下列关于程序编译结果的描述中,正确的是_。(分数:1.00)A.皆无编译错误B.有编译错误,无编译错误C.无编译错误,有编译错误D.皆有编译错误23.下列关于运算符重载的叙述中,正确的是_。(分数:2.50)A.通过运算符重载机制可以为 C+语言扩充新的运算符B.运算符重载的作用是使已有的运算符作用于类的对象C.重载运算符的操作数类型可以全部为基本类型D.所有运算符都可以被重载24.在每个 C+程序中必须有且仅有一个_。(分数:2.50)A.函数B.主函数C.预处理指令D.语句25.下列函数声明中,错误的是_。(分数:2.00)A.voi

13、d fun(int x=0,int y=0);B.void fun(int x,int y=0);C.void fun(int x=0,int y);D.void fun(int x,int y);26.若有定义语句“double x5=10,2.0,3.0,4.0,5.0,* p=x”,则错误引用 x数组元素的是_。(分数:2.50)A.*pB.x5C.*(p+1)D.*x27.如果派生类以 protected方式继承基类,则原基类的 protected成员和 public成员在派生类中的访问属性分别是_。(分数:1.00)A.public和 publicB.public和 protecte

14、dC.protected和 publicD.protected和 protected28.在对函数进行原型声明时,下列语法成分中,不需要的是_。(分数:2.00)A.函数返回类型B.函数参数列表C.函数名D.函数体29.在类中重载赋值运算符时,应将其声明为类的_。(分数:2.00)A.静态函数B.友元函数C.成员函数D.构造函数30.下列叙述中正确的是(分数:2.00)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队

15、尾指针共同决定的31.模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的 _ 。(分数:2.00)A.抽象和信息隐蔽B.局部化和封装化C.内聚性和耦合性D.激活机制和控制方法32.以下定义数组中错误的是(分数:2.00)A.int a10;B.int a2120;C.int a20;D.int a;33.下列关于虚基类的描述中错误的是(分数:2.00)A.虚基类子对象的初始化由最派生类完成B.虚基类子对象的初始化次数与虚基类下面的派生类个数有关C.设置虚基类的目的是消除二义性D.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出对虚基类构造函数调用34.已知类 A有公

16、用数据成员 a,并重载了“”运算符,且有 A obj2;const A*ptr new A;则下列语句错误的是 _ 。(分数:2.00)A.ptr-a=100;B.ptr=C.ptr+;D.obj2=*ptr;35.有如下程序: #includeiostream using namespace std; class Base public: void fun1()cout“Baseha/n“; virtual void fun2()cout“Base/n“; ; class Derived:public Base public: void fun1()cout“Derived/n“; void

17、 fun2()cout“Derived/n“; ; void f(Baseb.fun2(); int main() Derived obj; f(obj); return 0; 执行这个程序的输出结果是_。(分数:2.00)A.BaseBaseB.BaseDerivedC.DerivedBaseD.DerivedDerived36.若调用一个函数,且此函数中没有 return语句,则正确的说法是该函数 _ 。(分数:1.00)A.没有返回值B.返回若干个系统默认值C.有返回值,但返回一个不确定的值D.返回一个用户所希望的函数值37.若有如下程序: #includeiostream using

18、namespace std; class TestClass public: void who() cout“TestClass“endl; ; class TestClass1:public TestClass public: void who()cout“TestClass1“endl; ; int main() TestClass *p; TcstClass1 obj1; p= p-who(); return 0; 则该程序运行后的输出结果是 _ 。(分数:2.00)A.TestClass1B.TestClassC.0D.无输出38.己知基类 Employee只有一个构造函数,其定义如下

19、: Employee:Employee(int n):id(n) Manager是 Employee的派生类,则下列对 Manager的构造函数的定义中,正确的是_。(分数:2.00)A.Manager:Manager(int n):id(n)B.Manager:Manager(int n)id=n;C.Manager:Manager(int n):Employee(n)D.Manager:Manager(int n)Employee(n);39.设置虚基类的目的是 _ 。(分数:2.00)A.简化程序B.消除二义性C.提高运行效率D.减少目标代码行40.下列有关继承和派生的叙述中,正确的是_

20、。(分数:3.00)A.如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B.派生类的成员函数可以访问基类的所有成员C.基类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类二级 C+分类模拟 274答案解析(总分:77.50,做题时间:90 分钟)一、选择题(总题数:40,分数:77.50)1.有如下程序: #includeiostream using namespace std; class TlestClass int n; public: TestClass(int k):n(k) int get()return n; int ge

21、t()constreturn n+1; ; int main() TestClass p(5); const TestClass q(6); coutp.get()q.get(); return 0; 执行后的输出结果是_。(分数:2.50)A.55B.57 C.75D.77解析:解析 C+中对常对象的成员函数调用,将自动调用其常成员函数,程序中调用原型为“int get()const;“的函数,对于非常对象将调用原型为“int get();“的函数。因为首先用 5对对象 p进行了初始化,所以执行 p.get()时直接返回 5,而对于常对象则以 6对 q进行初始化。在调用 q.get()时,将

22、调用原型为“int get()const;“的函数,该函数将返回 n+1,第二个输出应为 7,所以本题答案为 57。2.在“文件包含”预处理语句的使用形式中,当#include 后面的文件名用”括起时,寻找被包含文件的方式是(分数:2.00)A.直接按系统设定的标准方式搜索目录 B.先在源程序所在的目录搜索,再按系统设定的标准方式搜索C.仅仅搜索源程序所在目录D.仅仅搜索当前目录解析:解析 本题考查在 include中采用不同的符号,如或“,编译器搜索方式的不同。3.已知在一个类体中包含如下函数原型:VOLUMEOPER ATOR-(VOLUME)const;,下列关于这个函数的叙述中,错误的

23、是_。(分数:1.00)A.这是运算符一的重载运算符函数B.这个函数所重载的运算符是一个一元运算符 C.这是一个成员函数D.这个函数不改变类的任何数据成员的值解析:解析 本题考核运算符的重载。题中语句为运算符一这是一个二元运算符,且是作为常成员函数来重载的,所以它不能更新对象的数据成员,也不能调用该类中没有用 const修饰的成员函数。4.若 MyClass是一个类名,且有如下语句序列 MyClass c1,*c2; MyClass *c3=new MyClass; MyClass 上面的语句序列所定义的类对象的个数是_。(分数:2.00)A.1B.2C.3 D.4解析:解析 C1、*C2、C

24、3 是 3个 MyClass对象,C4 是 MyClass对象的引用,它是对象 C1的别名。5.下列关于函数模板的描述中,正确的是_。(分数:1.00)A.函数模板是一个实例函数B.使用函数模板定义的函数没有返回类型C.函数模板的类型参数与函数的参数相同D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数 解析:解析 函数模板只是声明了一个函数的描述即模板,不是一个可以直接执行的函数,只有根据实际情况用实参的数据类型参数标识符之后,才能产生真正的函数。6.以下程序的输出结果是 _ 。 #includeiostream.h void func(char*m) +m: cout*mend1

25、; void main() static char*a=“MORNING“,“AFTERTOON“,“EVENING“; char*n: n=a; func(n); (分数:1.00)A.为空B.MORNINGC.AFTERTOON D.EVENING解析:7.有如下程序: #includeiostream using namespace std; class B public: virtual void show( )cout“B“; ; class D:public B public: void show( )cout“D“; ; void funl(B*ptr)ptr-show( );

26、void fun2(B class B:public A public: void func1()cout“class B fune 1“endl; virtual void func2()cout“class B func 2“endl; ; 下面正确的叙述是()。(分数:1.00)A.A:func2()和 B:func1()都是虚函数B.A:func2()和 B:func1()都不是虚函数C.B:funcl()是虚函数,而 A:func2()不是虚函数 D.B:func1()不是虚函数,而 A:func2()是虚函数解析:解析 基类中说明的虚函数,在派生类中自然就是虚函数,所以类 B中 f

27、uncl()是虚函数;而类A中的 func2()没有被关键字 virtual修饰,所以不是虚函数。9.若要对类 BigNumber中重载的类型转换运算符 long进行声明,下列选项中正确的是_。(分数:2.50)A.operator long()const; B.operator long(BigNumber);C.long operator long()const;D.long operator long(BigNumber);解析:解析 类型转换符必须作为成员函数重载。在重载类型转换符时,其类型名就是返回值类型,因此不需要声明返回值的类型。重载类型转换符“long”的形式如下: opera

28、tor long(参数表);10.在下面程序中,编译时出现错误的是 _。 Class A /(1) public: /(2) A() f(); /(3) void B() f(); virtual void f()const=0; /(4) ;(分数:2.00)A.(1)B.(2)C.(3) D.(4)解析:11.将 x+y*z中的“+”用成员函数重载,“*”用友元函数重载应写为_。(分数:2.50)A.operator+(operator*(y,z)B.operator+(operator*(y,z) C.operator+(x*(y,z)D.x+(operator*(y,z)解析:解析 在

29、定义了重载运算符后的函数后,函数 operator+重载了运算符“+”。如果在类以外的其他地方定义了一个函数,在类体中用 friend对该函数进行声明,此函数就称为本类的友元函数。“*”用友元函数重载就是运算符函数不作为成员函数,而把它放在类外,“.*”被改写为“operator*”。“+”为成员函数重载,x.operator+。所以“x+y*z”被改写为“x.operator+(operator*(y,z)”。12.有如下函数定义: void func(int a,intb+; 若执行代码段: int x=0,y=1 func(x,y); 则变量 x和 y值分别是_。(分数:2.50)A.0

30、和 1B.1和 1C.0和 2 D.1和 2解析:解析 本题考查函数参数传递方式。func 中第 1个参数为值传递方式,第 2个为引用传递方式。函数调用后,实参 x不受形参 a的影响,x 的值还是 0;y 的值跟着形参 b变化为 2。13.在重载一个运算符函数时,其参数表中没有任何参数,这说明该运算符是_。(分数:3.00)A.一元非成员运算符B.一元成员运算符 C.二元非成员运算符D.二元成员运算符解析:14.对于循环队列,下列叙述中正确的是_。(分数:2.50)A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针一定小于队尾指针D.队头指针可以大于队尾指针,也可以小于队尾指针

31、解析:解析 所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中当存储空间的最后一个位置已被使用而再要进行八队运算时,只要存储空间的第一个位置空闲,可将元素加入到第一个位置,即将存储空闲的第一个位置作为队尾。15.编译时的多态性可以通过使用 _ 获得。(分数:1.00)A.虚函数和指针B.重载函数和析构函数C.虚函数和对象 D.虚函数和引用解析:16.存取指针所指的值时,采用的运算符是_。(分数:2.50)A.#B.C.%D.* 解析:解析 对指针所指向的地址取值时,采用约存取运算符为*。B 为取地址符。17.在开发一个 C+程序

32、的整个过程中,第 3个步骤为_。(分数:2.50)A.链接 B.运行C.编辑D.编译解析:解析 在开发一个 C+程序的整个过程中,经过以下几个步骤:编辑编洋链接运行。故答案为 A。18.单个用户使用的数据视图的描述称为(分数:1.00)A.外模式 B.概念模式C.内模式D.存储模式解析:解析 选项 A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项 B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项 C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项 D)不正确,存储模式即为内模式。19.有如下类定义: cla

33、ss Point private: static int how_many; ; _how_many=0; 要初始化 Point类的静态成员 how_many,下画线处应填入的内容是_。(分数:1.00)A.intB.static intC.int Point: D.static int Point:解析:解析 本题考查静态数据成员,静态数据成员可以初始化,但只能在类体外进行初始化,其一般形式为:数据类型类名:静态数据成员名=初值。所以本题答案为 C。20.有如下程序: #includeiostream using namespace std; class Media public: void

34、 Name(); void Show(); protected: int page; ; class Book:private Media public: void Print() coutpageendl; void Show()Media:Show();) / ; int main() Book Bible; Bible.Name(); / Bible.Print(); / Bible.Show(); / return 0; 编译时有错误的是_。(分数:2.00)A.语句B.语句 C.语句D.语句解析:解析 类 Book私有继承自类 Media,所以类 Media中的公有成员函数 Name

35、()在继承类 Book中变成了私有成员函数,因而类 Book的对象 Bible不能访问私有成员函数 Name()。21.下列程序的运行结果为_。 # includeiostream.h templateclass TT class FF TT a1,a2,a3; public: FF(TT b1,TT b2,TT b3)a1=b1;a2=b2;a3=b3; TT Sum()return a1+a2+a3;); void main() FFintx(int(1.1),2.3),y(int(4.2),5,6); coutx.Sum()“y.Sum()encIl;(分数:2.50)A.6.1 15.

36、2B.6 15 C.6 15.2D.6.1 15解析:解析 本题考查模板函数的应用,表达式 int(1.1)和 int(4.2)是将 1.1和 4.2强制转换为整型。22.有如下程序: class Base public: int data; ; class Derivedl: public Base ; class Derived2: protected Base ; int main() Derivedl d1; Derived2 d2; d1. data=0;/ d2. data=0;/ return 0; 下列关于程序编译结果的描述中,正确的是_。(分数:1.00)A.皆无编译错误B.

37、有编译错误,无编译错误C.无编译错误,有编译错误 D.皆有编译错误解析:解析 本题考查公用继承和保护继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。本题中 Dezived1公用继承。Base,所以编译正确,Derived2 保护继承 Base,所以编译不正确。23.下列关于运算符重载的叙述中,正确的是_。(分数:2.50)A.通过运算符重载机制可以为 C+语言扩充新的运算符B.运算符重载的作用是使已有的运算符作用于类的对象 C.重载运算符的

38、操作数类型可以全部为基本类型D.所有运算符都可以被重载解析:解析 运算符重载就是赋予已有的运算符多重含义。C+中通过重新定义运算符,使它能够用于特定类的对象执行特定的功能,这便增强了 C+语言的扩充能力。24.在每个 C+程序中必须有且仅有一个_。(分数:2.50)A.函数B.主函数 C.预处理指令D.语句解析:解析 在每一个 C+程序中必须有且只有一个主函数,每个程序的执行都是从主函数的开始。25.下列函数声明中,错误的是_。(分数:2.00)A.void fun(int x=0,int y=0);B.void fun(int x,int y=0);C.void fun(int x=0,in

39、t y); D.void fun(int x,int y);解析:26.若有定义语句“double x5=10,2.0,3.0,4.0,5.0,* p=x”,则错误引用 x数组元素的是_。(分数:2.50)A.*pB.x5 C.*(p+1)D.*x解析:解析 选项 B中 x5数组下标越界,数组的下标是从 0开始的。27.如果派生类以 protected方式继承基类,则原基类的 protected成员和 public成员在派生类中的访问属性分别是_。(分数:1.00)A.public和 publicB.public和 protectedC.protected和 publicD.protected

40、和 protected 解析:解析 本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,所以本题答案为 D。28.在对函数进行原型声明时,下列语法成分中,不需要的是_。(分数:2.00)A.函数返回类型B.函数参数列表C.函数名D.函数体 解析:解析 在 C+中函数在使用之前要预先声明,这种声明在标准 C+中称为函数原型。函数给出了函数名、返回类型以及在调用函数时必须指明参数个数和类型。29.在类中重载赋值运算符时,应将其声明为类的_。(分数:2.00)A.静态函数B.友元函数C.成员函数 D.构造函数解析:30.下

41、列叙述中正确的是(分数:2.00)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定的 解析:解析 循环队列是线性表的一种,所以选项 A错误。循环队列的入队和出队需要由队尾指针和队头指针完成,所以选项 B和 c错误。31.模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的 _ 。(分数:2.00)A.抽象和信息隐蔽B.局部化和封装化C.内聚性和耦合性 D.激活机制和控制方法解析:解析

42、衡量模块独立性的度量标准则是模块的内聚性和耦合性。32.以下定义数组中错误的是(分数:2.00)A.int a10;B.int a2120;C.int a20; D.int a;解析:解析 考查数组的定义方法。 解题要点 定义一个二维数组时,可以不定义行数,但一定要定义列数,也就是说,选项 C)若写成 int20,则是正确的。 考点链接 数组的下标是从零开始的。33.下列关于虚基类的描述中错误的是(分数:2.00)A.虚基类子对象的初始化由最派生类完成B.虚基类子对象的初始化次数与虚基类下面的派生类个数有关 C.设置虚基类的目的是消除二义性D.带有虚基类的多层派生类构造函数的成员初始化列表中都

43、要列出对虚基类构造函数调用解析:解析 虚基类主要是为了消除在多重继承中的二义性问题。实际上,说某个类是虚基类,并不是该类本身有什么特殊的地方,而是在继承的时候加上 virtual修饰词。虚基类不同于抽象类,虚基类是可以被实例化的,派生类初始化时,必须列出虚基类的构造函数调用。虚基类对象的初始化次数只于对象的多少有关,与类的层次结构是没有关系的。故本题正确答案为 B。34.已知类 A有公用数据成员 a,并重载了“”运算符,且有 A obj2;const A*ptr new A;则下列语句错误的是 _ 。(分数:2.00)A.ptr-a=100; B.ptr=C.ptr+;D.obj2=*ptr;

44、解析:解析 本题考查 const修饰符的作用。注意:const 位置不同,其修饰的部分也是不同的。本题中 const修饰的是 ptr所指的对象本身,所以,ptr 是可以重新指向新的对象,而 ptr-a 则无法被更新。35.有如下程序: #includeiostream using namespace std; class Base public: void fun1()cout“Baseha/n“; virtual void fun2()cout“Base/n“; ; class Derived:public Base public: void fun1()cout“Derived/n“; v

45、oid fun2()cout“Derived/n“; ; void f(Baseb.fun2(); int main() Derived obj; f(obj); return 0; 执行这个程序的输出结果是_。(分数:2.00)A.BaseBaseB.BaseDerived C.DerivedBaseD.DerivedDerived解析:解析 此题考查的是虚函数的概念。在 C+语言中,一个派生类的对象可以被它的任何一个基类的指针所指向,若基类和派生类中存在一模一样的成员函数。那么通过该基类指针调用这样的成员函数时,若这个成员函数被定义成虚函数,那么就调用派生类中的;否则就调用基类中的。本题中

46、,在 f()函数中,形参 b是一个基类的引用,它引用的是主函数中定义的派生类对象 obj,所以在调用 fun1()时,运行的是基类的版本,而 fun2()运行的是派生类的版本。36.若调用一个函数,且此函数中没有 return语句,则正确的说法是该函数 _ 。(分数:1.00)A.没有返回值B.返回若干个系统默认值C.有返回值,但返回一个不确定的值 D.返回一个用户所希望的函数值解析:37.若有如下程序: #includeiostream using namespace std; class TestClass public: void who() cout“TestClass“endl; ; class TestClass1:public TestClass public: void who()cout“TestClass1“endl; ; int main() TestClass *p; TcstClass1 obj1; p= p-who(); return 0; 则该程序运行后的输出结果是 _ 。(分数:2.00)A.TestClass1 B.TestClassC.0D.无输出解析:解析 程序中的 TestClas1为 TestClass的派生类,主函数 main中定

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