面向对象设计试卷8.doc_第1页
面向对象设计试卷8.doc_第2页
面向对象设计试卷8.doc_第3页
面向对象设计试卷8.doc_第4页
面向对象设计试卷8.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计试题(8)题 号一二三四五六七总 分1218181812616100得 分一,单项选择题(每小题1分,共12分)1.在函数的引用调用时,实参和形参应该是使用( )。A变量值和变量 B地址值和指针C地址值和引用 D变量值和引用2以下关于文件操作的叙述中,不正确的是( )。A打开文件的目的是使文件对象与磁盘文件建立联系B 关闭文件的目的之一是释放内存中的文件对象C关闭文件的目的之一是保证将输出的数据写入硬盘文件D文件读写过程中,程序将直接与磁盘文件进行数据交换3. 若有语句int a10=0,1,2,3,4,5,6,7,8,9,*p=a;则( )不是对a数组元素的正确引用(其中0i10)。ApiB*(*(a+i)Cap-aD*(&ai)4. 下列是构造函数的特点,( )是错误的。A构造函数是一种成员函数,它具有一般成员函数的特点B构造函数的名称与其类名相同C构造函数必须指明其类型D一个类中可定义一个或多个构造函数5. 关于友元函数的描述中,( )是错的。A 友元函数是成员函数,它被说明在类体内 B 友元函数可直接访问类中的私有成员C 友元函数破坏封装性,使用时尽量少用D 友元类中的所有成员函数都是友元函数6. 下列对派生类的描述中,( )是错误的。A 一个派生类可以作为另一个派生类的基类B 派生类至少应有一个基类C 基类中成员访问权限继承到派生类中都保持不变D 派生类的成员除了自已定义的成员外,还包含了它的基类成员7. C+类体系中,能被派生类继承的有( )。A构造函数 B虚函数 C友元函数 D析构函数8关于下列虚函数的描述中,( )是正确的。A 基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数B 虚函数是一个static存储类的成员函数 C 虚函数是一个非成员函数D 派生类的虚函数与基类的虚函数应具有不同的类型或个数9. 以下有关静态数据成员函数的叙述不正确的是( )。A静态成员函数属于整个类B对静态成员函数的引用不允许使用对象名C在静态成员函数中不能直接引用类的非静态成员D使用类名可以直接调用其静态成员函数10. 下列有关运算符重载的描述中,( )是正确的。A运算符重载可改变其优先级 B运算符重载不改变其语法结构 C运算符重载可改变其结合性 D运算符重载可改变其操作数的个数11. 对new运算符的下列描述中,( )是错误的。A. 用它创建对象数组时必须指定初始值B. 它可以动态创建对象和对象数组C. 用它创建对象时要调用构造函数D. 用它创建的对象可以使用运算符delete来释放12. 下列有关类的说法不正确的是( )。A 对象是类的一个实例B 任何一个对象只能属于一个具体的类C 类与对象的关系和数据类型与变量的关系相似D 一个类只能有一个对象二 填空题 (每空1分,共18分)1若有函数调用语句 fun(a+b,(y=9,x),37),则其实参的个数是 。2已知字母a的ASCII码为十进制数97,ch为字符变量,则ch=a+8-5的值为 。 3.设:int a5=10,20,30,40,50;int *p=&a0;表达式+*p+*(a+3)的值是 。4若有宏定义: #define T(x,y,z) x*y*z/4coutT(3+4,2*4,4+4)endl;上述程序段运行结果为 。5“判断整数a是否在闭区间-10,10之中”的C+语言表达式是 。 6设有代码“static int a34=1,2, 0, 4,6,8,10;”则a12值为 。7假定所有变量均已正确定义,下列程序段运行后x的值是 。 a = b = c = 14; x = 35; if(!a)x-;else if(b);if(c)x = 3;else x = 4; 8类的成员函数可以在 定义,也可以在 定义。9如类中没有明确定义析构函数,清除对象的工作 来完成,原因是 。10生成一个派生类对象时,先调用 的构造函数,然后调用 的构造函数。11在继承关系中, 称为多重继承, 称为单继承。12若在I/O流的输出中使用控制符setfill( )设置填充字符,应包含的头文件是 。13在私有继承关系下,基类的公有成员和保护成员将成为派生类中的 成员,它们只能由 来访问。三、程序填充。对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,3小题,共18分) 1有一个一维数组,存放10个职工的年龄,别写两个函数求职工的最大年龄和最小年龄。#include void max_age(int arr ); (1) int max , min; void main( ) int i;int array10;coutinput 10 data:;for(i=0;iarrayi;max_age(array);min_age(array);coutmax_age is :maxendl; /使用全局变量maxcoutmin_age is :minendl; /使用全局变量minvoid max_age(int arr )int j;max=arr0; /使用全局变量max for(j=1;j10;j+) if ( (2 ) max=arrj; /使用全局变量maxvoid min_age(int arr )int k;min=arr0; /使用全局变量minfor(k=1;karrk) (3) ; /使用全局变量min(1) (2) (3)2. class A int a,b; public: _(1)_ /定义构造函数,使参数aa和bb的默认值为0, /在函数体中用aa初始化a,用bb初始化b ;main() A *p1, *p2; _(2)_ ; /调用无参构造函数生成由p1指向的动态对象 _(3)_ ; /调用带参构造函数生成由p2指向的动态对象, /使a和b成员分别被初始化为4和5(1) (2) (3)3下列程序将结构体变量tt中的内容写入D盘上的date.txt文件。#include #include struct dateint year,month,day;void main()date tt=2002,2,12;ofstream ;outdate.open(d:date.txt,ios:binary);if ( (1) ) cerr n D:write1.dat not open endl ; exit (-1) ; outdate.write( (2) ,sizeof(tt); (3) ; (1) (2) (3) 四、写出程序运行结果(每小题6分,3小题,共18分)1. #include void main() int i,a=1,2,3,4,5,6,7,8,*p=a; for (i=1;i5;i+) pi=ai-1+ai+1; couta3endl; 2. class mystr char string81;int len;public:mystr(char *s)strcpy(string,s);void getvalue(char *s,int &n) strcpy(s,string); n=len; friend mystr operator+(mystr a,mystr b)mystr c( ); strcpy(c.string,a.string); strcat(c.string,b.string); c.len=strlen(c.string); return c;void main() char st81; int l;mystr a(Hello ),b(everybody!),c( );c=a+b; c.getvalue(st,l);cout stendlLen=lendl;3#include class base public: virtual void show() coutclass base show() is called.n;class derived:public base public:void show()coutshow();void main() base demo1; derived demo2; display(&demo1); display(&demo2);五、指出程序、函数(类中函数)的功能(每小题6分,2小题,共12分);1. #include#includevoid change(char *a ) int i=0; for(i=0; ai!=0 ;i+) if(ai=a&ai=z) ai= ai 32 ; void main()char p80; cout n; cin.getline(p,80) ; /读一行字符,中间可以有空格 change(p); coutpendl;2. #include class complex public: complex(double r=0.0,double i=0.0) real=r,imag=i; complex operator +(complex c2); complex operator - (complex c2); void display(); private: double real; double imag; ; complex complex:operator + (complex c2) return complex(real + c2.real,imag + c2.imag);complex complex:operator - (complex c2) return complex(real - c2.real,imag - c2.imag); void complex:display() cout(real,imag)endl;六、程序改错。请根据程序段或函数模块的功能改写个别地方的错误(每小题6分,共6分)。函数find功能是:在指针p所指数组中,查找值为x的元素,找到后,返回该元素的下标,否则返回-1,改正程序中语句错误,能够正确运行。 #include #include const int N=10; int find(int *p,int n,int x) /1 int I ; / 2 *(p+n)=x; /3 while(*p+i!=x) /4 i+; /5 if(i!=n) /6 return 1 /7 else /8 return -1; /9 void main() int i,pos,x; int *p=new int N; for(i=0;iN;i+) *(p+i)=rand()%50; for(i=0;iN;i+) cout*(p+i)t; coutx; pos=find(p,N,x); if(pos!=-1)coutindex= pos ,value= *(p+pos)endl; else coutNo find!endl; 七、编程题(每小题6分,共12分)1声明一个哺乳动物Mammal类,再由此派生出狗Dog类,声明一个Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。2声明一个Shape抽象类,在此基础上派生出Rectangle和Circle类,二者都有GetArea( )函数计算对象的面积,GetPerim( )函数计算对象的周长。#include#includeclass shape public: virtual void getarea()=0; ;void show(shape *p) p-getarea(); 面向对象程序设计8 试题答案及评分标准 (供参考)一、单项选择题(每小题1分,共12分)1D2D3B4C 5A6C7B8A9C10B11A12D二、填空题(每空1分,共18分)21.3 2.d 3.51 4. 132 5. a=-10&a=10 6. 0 7. 3 8. 类体内 类体外 9. 仍由析构函数 编译器自动提供缺省析构函数10基类 派生类 11. 一个派生类同时继承自多个基类的情形 一个派生类继承自一个基类的情形 12.iomanip.h 13. 私有 派生类的成员函数三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内客填写到程序后面的标号处。(每小题6分,共18分)评分标准:每空2分1 (1) a=new intMaxLen (2) return ai; (3) s+=r.GetValue(i)2. (1) A(int aa=0, int bb=0)a=aa; b=bb; (2) p1=new A (3) p2= new A(4,5)3 (1) ! file1 (2)(char *) &tt (3) file1.close ; 四、写出程序运行结果(每小题6分,3小题,共18分1运行结果:132. 运行结果:Hello everybody! Len=163. 运行结果:class base show() is called.class derived show() is called.五、指出程序或函数的功能(每小题6分,2小题,共12分);1. 函数change的功能是,将字符串中的小写字母转成大写字母。2.定义一个复数类,重载+、-法,对复数运算成立。六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误(6分) 第2、4、7语句错2行语句改为 int i=0;4行语句改为 while(*(p+i)!=x);7行语句改为 return i 。七、编程题(每小题6分,共12分) 评分标准:按编程完整程度酌情给分。1声明一个哺乳动物Mammal类,再由此派生出狗Dog类,声明一个Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。#includeclass Mammal public: Mammal() coutcall Mammalendl; Mammal() coutDelet

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论