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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(007《面向对象程序设计》精彩试题及问题详解.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

007《面向对象程序设计》精彩试题及问题详解.docx

1、007面向对象程序设计精彩试题及问题详解全国2007年10月高等教育自学考试面向对象程序设计试题课程代码:02328一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.以下说法中正确的是( )A.C+程序总是从第一个定义的函数开始执行B.C+程序总是从main函数开始执行C.C+函数必须有返回值,否则不能使用函数D.C+程序中有调用关系的所有函数必须放在同一个程序文件中2.以下关于函数模板叙述正确的是( )A.函数模板也是一个具体类型的函数B.函数模板的类型参数与函数的参数是同一个

2、概念C.通过使用不同的类型参数,函数模板可以生成不同类型的函数D.用函数模板定义的函数没有类型3.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是( )A.作为友元函数重载的1元运算符B.作为成员函数重载的1元运算符C.作为友元函数重载的2元运算符D.作为成员函数重载的2元运算符4.构造函数不具备的特征是 ( )A.构造函数的函数名与类名相同B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数必须指定类型说明 5.在C+中,封装是借助什么达到的( )A.结构 B.数组 C.类 D.函数6.在哪种情况下适宜采用 inline 定义内联函数?( )A.函数体含有循环语句 B.函

3、数体含有递归语句 C.函数代码少、频繁调用 D.函数代码多、不常调用7.在关键字public后面定义的成员为类的( )A.私有成员 B.公用成员 C.保护成员 D.任何成员8. 以下哪个基类中的成员函数表示纯虚函数?( )A.virtual void tt()=0 B.void tt(int) = 0C.virtual void tt(int) D.virtual void tt(int) 9.假定AA是一个类,“AA * abc( ) const;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x的值( )A.已经被改变 B.可能被改变C.不变 D.

4、受到函数调用的影响10.C+ 对 C 语言作了很多改进,即从面向过程变成为面向对象的主要原因是( )A.增加了一些新的运算符 B.允许函数重载,并允许设置缺省参数 C.规定函数说明符必须用原型 D.引进了类和对象的概念 二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。11.如果一个派生类只有一个唯一的基类,则这样的继承关系称为_。12.C+支持两种多态性:_时的多态性和运行时的多态性。13.若要保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以_的方式直接继承它。14.所有模板都以template关键字和一个_表开头。15.若一个

5、函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的_语句。16.类型转换函数没有返回值类型,而且参数表为_。17.C+提供的预处理命令有嵌入指令,条件编译指令和_。18.对象将其大部分实现细节隐藏起来,这种机制称为_。19.定义类动态对象数组时,其元素只能靠自动调用该类的_来进行初始化。20.在函数体之前加_关键字可以防止覆盖函数改变数据成员的值。三、改错题(本大题共2小题,每小题6分,共12分)21.下面是分数类fract的定义及测试主程序,在类定义及其友元函数定义中1到6行中有三处错误,更正错误后程序应显示41/28,请指出错误所在行的行号并给出改正意见。class fracti

6、nt den; /分子int num; /分母public /1行fract(int d=0,int n=1):den(d),num(n) /2行friend fract &operator+=(fract,fract&); /3行void show( ) coutden/num; /4行; /5行 friend fract &operator+=(fract f1,fract f 2) /6行 /7行f1.den=f1.den*f 2.num+f1.num*f 2.den; /8行f1.num*=f 2.num; /9行return f1; /10行void main( )fract fr(

7、3,4);fr+=fract(5,7);fr.show( );错误行的行号为_、_和_。分别改正为_、_和_。22.下面程序段第13-17行中存在着三条语句错误,请指出错误语句的行号并说明原因。class A /1行int a; /2行 public: /3行A(int aa=0):a(aa) /4行; /5行class B /6行int a,b; /7行const int c; /8行A d; /9行public: /10行B( ):c(0) a=b=0; /11行B(int aa, int bb):d(aa+bb) /12行a=aa; b=bb; c=aa-bb; /13行 /14行 /1

8、5行B a , b( 1 , 2 ); /16行B x= a , y( b ) , z( 1 , 2 , 3 ); /17行 错误行的行号为_、_和_。错误原因分别为_、_和_。四、程序填空题(本大题共3小题,每小题6分,共18分)请按提示要求完成以下程序段的填空。23.在下面一段类定义中, Derived类是由直接基类Base 1和Base 2所派生的,Derived类包含有两个间接基类BaseBase,在初始化函数Init中,需要把x1和x2的值分别赋给属于基类Base1的x成员和属于基类Base2的x成员。class BaseBase protected:int x;public:Bas

9、eBase( ) x = 1;class Base1: public BaseBase public:Base1( ) ;class Base2: public BaseBase public:Base2 ( ) ;class Derived: _(1)_public:Derived( ) void Init(int x1, int x2) _(2)_;_(3)_;void output( ) coutBase1:xBase2:xendl;(1) (2) (3) 24.#include#includeclass A int *a; int n; int MaxLen;public:A(): a

10、(0), n(0), MaxLen(0) A(int *aa, int nn, int MM) n=nn;MaxLen=MM;if(nMaxLen) exit(1);a=new intMaxLen;_(4)_; /以i为循环变量把aa数组中每个元素值/传送给a数组的对应元素中 A( );int GetValue(int i) return ai; /函数体返回ai的值;_(5)_/析构函数的类外定义void main( )int b10=1,2,3,4,5,6,7,8,9,10; A r(b,10,10);int i,s=0;_(6)_ ; /以i为循环变量,把r对象的a数据成员中的/每个元素

11、值依次累加到s中couts=sendl;(4) (5) (6)25.下面是一维数组类ARRAY的定义,ARRAY与普通一维数组区别是:(1)用()而不是进行下标访问,(2)下标从1而不是从0开始,(3)要对下标是否越界进行检查。class ARRAY int *v; /指向存放数组数据的空间int s;/数组大小 public: ARRAY(int a , int n); ARRAY( )delete v;int size( ) return s; int& operator ( )(int n); _(7)_ operator()(int n) / ()的运算符函数定义 if(_(8)_)

12、cerr下标越界!; exit(1);/exit函数的功能是退出程序运行return _(9)_;(7) (8) (9) 五、程序分析题(本大题共6小题,每小题5分,共30分)阅读以下程序,写出其运行结果。26.#include class test private: static int val; int a; public: static int func( ); static void sfunc(test &r); ; int test:val=10; int test:func( ) val-; return val; void test:sfunc(test &r) r.a=15;

13、 cout result3= r.a; void main( ) cout resultl= test:func( )endl; test a; cout result2= a.func( )endl; test:sfunc(a); 27.# include class position public: int x,y; void init(int initx,int inity); int getxvalue( ); int getyalue( ); ; void position:init (int initx,int inity) x=initx; y=inity; int positi

14、on:getxvalue( ) return x; int position:getyalue( ) return y; void printout(position & rl) coutrl. getxvalue( ) rl.getyalue()init(5,6); for (int i=0;i5;i+) printout(*(pa+);28.#include class testpublic:virtual void fun1( )cout test fun1 endl;virtual void fun2( )cout test fun2 endl;void fun3( )cout tes

15、t fun3 endl;class ftt:public testpublic:void fun1( )cout ftt fun1endl;virtual void fun2( )cout ftt fun2endl;virtual void fun3( )cout ftt fun3fun1( );pp-fun2( );pp-fun3( );29.#include class complex int real; int imag; public: complex( int r=0 , int i=0 ): real( r ),imag( i ) complex operator+( ) real

16、 + ; return *this; void show( ) coutreal endl imag; ; void main( ) complex c(5,9); +c; c.show( ); 30.#includeclass A int a;public:A(int aa=0): a(aa) coutaendl;A( ) cout11endl;void main( ) A *p; A x2= 1 , 2 ;p=new A3;delete p;31.#includeclass A int *a;public:A(int x=0) : a( new int ( x ) ) A( ) delet

17、e a;int getA( ) return *a;void setA(int x) *a=x;void main( ) A x1 , x2( 3 );A *p= &x2;p-setA( x2.getA( ) + 5 );x1.setA( 15 + x1.getA( ) );cout x1.getA( ) x2.getA( ) endl;200710易老师做的参考答案一、1.B 2.C 3.B 4.D 5.C 6.C 7.B 8.A 9.C 10.D二、11. 单继承 12.编译 13.virtual public 14.虚拟的类型参数 15.声明16.空 17.常变量 18.封装 19.构造

18、函数 20.const三、21 错误的行为:1 3 6 分别改正为:public: friend fract &operator+=(fract &,fract&); fract & operator +=(fract &f1,fract &f2)22 错误的行为: 13 15 17 分别改正为: B(int aa, int bb):d(aa+bb),c(aa-bb) /12行 a=aa; b=bb; /13行 ; /15行 B x=a,y(b),z(1,2); /17行23 public Base1,public Base2 Base1:x=x1; Base2:x=x2;24 for (int i=0;in;i+) ai=aai; A:A()delete a; for(i=0;is s 26 resultl=9 resultl=8resultl=15 27 5 6 2 2 7 8 4 4 5 5 6 628 ftt fun1 ftt fun2 test fun329 6 930 1 2 0 0 0 11 11 11 11 11(每个数据占一行显示) 31 15 8

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1