c -面向对象程序设计考试试题_第1页
c -面向对象程序设计考试试题_第2页
c -面向对象程序设计考试试题_第3页
c -面向对象程序设计考试试题_第4页
c -面向对象程序设计考试试题_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、大学考试试题纸( A 卷)(2007  -2008  学年第 1 学期) 面向对象程序设计 课程  计算机 院(系)                       班级考试时量 100分钟 学生人数       命题教师   系主任   &#

2、160;         交题时间:   年    月    日        考试时间:    年    月    日1. 一、简答题(每小题5分,共20分) 1. 什么是类?什么是对象?对象与类的关系是什么? 2. 构造函数和析构函数的主要作用是什么?他们各有什么特

3、性? 3. 有哪几种继承方式?每种方式的派生类对基类成员的继承性如何? 4. 简要叙述友元运算符函数和成员运算符函数有什么不同点? 2. 二、选择题(每小题2分,共20分)1假设已经有定义const char *pName=”Student”;下面的语句错误的是      。ApName3=t;         B. pName=”score”;C. pName=new char5;    D. pName=new char(p);2.

4、 在下面有关对构造函数的描述中,错误的是          。A.  构造函数可以带有返回值B.  构造函数的名字与类名完全相同C.  构造函数可以带有参数 D.构造函数可以缺省3在下面有关析构函数特征的描述中,正确的是          。A.  一个类中可以定义多个析构函数B.  析构函数名与类名完全相同C.  析构函数不能指定返回类型D.  

5、析构函数可以有一个或多个参数4假定AB为一个类,则执行“AB  a(4) , b3 , * p2 ;”语句时,自动调用该类构造函数的次数为          。A. 3              B. 4              

6、0;C. 6               D. 95. 假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为          。A.  AB operator+(AB  &a,AB  &b)       B

7、.  AB  operator+(AB  &a)C.  operator+(AB  a)                         D.  AB  & operator+( )6. 假设定义了函数模版:template<class T>T max(T x,

8、 T y)   return (x>y)?x:y;   并定义了:int i;char c;那么下列错误的调用该模版的是          。Amax(i,i);        Bmax(c,c);Cmax(int(c),i);    Dmax(c,i);7模版的主要用途是为了        

9、  。A提高代码的运行效率B实现多态性C提高代码的重用性D加强类的封装性8下列说法错误的是          。A申明为指向基类对象的指针可以指向它的公有派生的对象,但不允许指向它的私有派生的对象B允许将一个声明为指向基类的指针指向其公有派生类的对象,但是不能将一个声明为指向派生类对象的指针指向其基类的一个对象。C声明为指向基类对象的指针,当其指向公有派生类对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的成员D以上说法都不对9现有程序如下:#inc

10、lude <iostream.h>#include <iomanip.h>void main()int kk=1234;cout<<setfill(*)<<setw(6)<<kk<<endl;cout<<kk<<endl;以上程序的运行结果是        。A1234        B. *1234      

11、  C.*1234        D.以上都不对1234          1234            *123410在公有继承的情况下,基类成员在派生类中的访问权限        。A受限制    B.

12、保持不变    C.  受保护   D.  不受保护1. 三、填空题(每空1分,共10分) 1. 定类AB中有一个公有属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为          (1)          。 2. 通常情况下,当创建派生类对象时,首先执行    (2)   &

13、#160; 的构造函数,随后再执行    (3)    的构造函数,当撤销派生类对象时,则先执行    (4)     的析构函数,随后再执行    (5)     的析构函数。 3. ios类中有几个成员函数可以用来对输入输出进行格式化控制,格式控制主要是通过对    (6)    的操作来完成的。 4. 所谓赋值兼容规则是指

14、在需要基类对象的任何地方都可以使用    (7)    来替代。 5. 纯虚函数是一个在基类中说明却没定义的虚函数,但要求在它的派生类中必须定义自己的版本,或重新说明为纯虚函数。那么,纯虚函数的定义形式为    (8)    。 6. 分别写出类AB的单目运算符”+”的前缀方式和后缀方式的友元函数重载一般形式:       (9)    、    (10)

15、   。 2. 四、写出下面程序的运行结果(每小题5分,共20分)1、#include <iostream.h>  class Base  public:     Base() cout<<"Constructing base classn"    Base() cout<<"Destructing base classn"    class Derive : publi

16、c Basepublic:  Derive() cout<<"Constructing derived classn"    Derive() cout<<"Destructing derived classn"  private:Base a;  void main()     Derive op;   2、#include <iostream.h>class Basepublic:  &

17、#160;void show() cout<<"This is Base class"<<endl; class Derive : public Basepublic:   void show() cout<<"This is Derived class"<<endl;void main()Base obj,*pBase; Derive D_obj;  pBase=&obj;pBase->show();pBase=&D_obj

18、;pBase->show();3、#include<iostream.h>int arr=23,25,27,29,31;int &get_value(int i)return arri;void main()   int i;   cout<<get_value(3)<<endl;   get_value(2)=50;   for(i=0;i<5;i+)    cout<&l

19、t;get_value(i)<<”  “;4、#include <iostream.h>class complexpublic: complex(int r,int i):real(r),imag(i) friend complex operator+(complex &); friend complex operator-(complex ); void print()  cout<<"("<<real<<","&l

20、t;<imag<<")"<<endl; private: int real,imag;complex operator+(complex &o) o.real+; o.imag+; return o;complex operator-(complex o) o.real-; o.imag-; return o;void main() complex a(1,2),b(3,4); +a; a.print(); -b;&#

21、160;b.print();1. 五、编程题(每小题10分,共30分)1、建立一个Student类,含有私有的学号(字符型)、姓名(字符型)、年龄(整型)数据成员。用new自动为Student的对象分配内存,并将学号“0504020101”,姓名“张三”,年龄20存入内存的相应域中,把该的信息显示出来。2、建立普通的基类building,用来存储一座楼房的层数、房间数以及它的总面积数。建立派生类house,继承building,并存储下面的内容:卧室与浴室的数量,另外,建立派生类office,继承building,并存储灭火器与电话的书面。在主程序中,分别建立对象显示各对象所有的数据成员。3、

22、为Date类重载“+”运算符,实现在某一个日期上(年、月、日)加一个天数。注:请打印或用炭素墨水书写、字迹要求工整、并抄写在方框线内       共   页,  第   页,考试试题纸( A 卷)(2007  -2008  学年第 1 学期) 面向对象程序设计  课程   计算机、网络 专业            &#

23、160;       班级考试时量 100分钟 学生人数       命题教师    系主任          交题时间:   年    月    日        考试时间:   

24、; 年    月    日一、简答题(每小题5分,共20分)1. 什么是类?什么是对象?对象与类的关系是什么? 2. 构造函数和析构函数的主要作用是什么?他们各有什么特性? 3. 有哪几种继承方式?每种方式的派生类队基类成员的继承性如何? 4. 简要叙述友元运算符函数和成员运算符函数有什么不同点?二、选择题(每小题2分,共20分)1假设已经有定义const char *pName=”Student”;下面的语句错误的是      。ApName3=t;   

25、;      B. pName=”score”;C. pName=new char5;    D. pName=new char(p);2. 在下面有关对构造函数的描述中,错误的是          。A.  构造函数可以带有返回值B.  构造函数的名字与类名完全相同C.  构造函数可以带有参数5. 构造函数可以缺省3在下面有关析构函数特征的描述中,正确的是   &#

26、160;      。A.  一个类中可以定义多个析构函数B.  析构函数名与类名完全相同C.  析构函数不能指定返回类型D.  析构函数可以有一个或多个参数4假定AB为一个类,则执行“AB  a(4) , b3 , * p2 ;”语句时,自动调用该类构造函数的次数为          。A. 3         &#

27、160;    B. 4               C. 6               D. 95. 假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为      &#

28、160;   。A.  AB operator+(AB  &a,AB  &b)       B.  AB  operator+(AB  &a)C.  operator+(AB  a)                   

29、60;     D.  AB  & operator+( )6. 假设定义了函数模版:template<class T>T max(T x, T y)   return (x>y)?x:y;   并定义了:int i;char c;那么下列错误的调用该模版的是          。Amax(i,i);       

30、; Bmax(c,c);Cmax(int(c),i);    Dmax(c,i);7模版的主要用途是为了          。A提高代码的运行效率B实现多态性C提高代码的重用性D加强类的封装性8下列说法错误的是          。A申明为指向基类对象的指针可以指向它的公有派生的对象,但不允许指向它的私有派生的对象B允许将一个声明为指向基类的指针指向其公有派生类的对象,但是不能

31、将一个声明为指向派生类对象的指针指向其基类的一个对象。C声明为指向基类对象的指针,当其指向公有派生类对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的成员D以上说法都不对9现有程序如下:#include <iostream.h>#include <iomanip.h>void main()int kk=1234;cout<<setfill(*)<<setw(6)<<kk<<endl;cout<<kk<<endl;以上程序的运行结果是   

32、60;    。B1234        B. *1234        C.*1234        D.以上都不对1234          1234         

33、0;  *123410在公有继承的情况下,基类成员在派生类中的访问权限        。A受限制    B. 保持不变    C.  受保护   D.  不受保护三、填空题(每空1分,共10分)1. 定类AB中有一个公有属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为          (1) 

34、0;        。 2. 通常情况下,当创建派生类对象时,首先执行    (2)     的构造函数,随后再执行    (3)    的构造函数,当撤销派生类对象时,则先执行    (4)     的析构函数,随后再执行    (5)     的

35、析构函数。 3. ios类中有几个成员函数可以用来对输入输出进行格式化控制,格式控制主要是通过对    (6)    的操作来完成的。 4. 所谓赋值兼容规则是指在需要基类对象的任何地方都可以使用    (7)    来替代。 5. 纯虚函数是一个在基类中说明却没定义的虚函数,但要求在它的派生类中必须定义自己的版本,或重新说明为纯虚函数。那么,纯虚函数的定义形式为    (8)    。 6. 分别写出类AB的单目运

36、算符”+”的前缀方式和后缀方式的友元函数重载一般形式:       (9)    、    (10)    。四、写出下面程序的运行结果(第1小题6分,第2、3小题7分,共20分)1、#include <iostream.h>  class Base  public:     Base() cout<<"Constructing base cl

37、assn"    Base() cout<<"Destructing base classn"    class Derive : public Basepublic:  Derive() cout<<"Constructing derived classn"    Derive() cout<<"Destructing derived classn"  private:Base a; &#

38、160;void main()     Derive op;   2、#include <iostream.h>class Basepublic:   void show() cout<<"This is Base class"<<endl; class Derive : public Basepublic:   void show() cout<<"This is Derived cla

39、ss"<<endl;void main()Base obj,*pBase; Derive D_obj;  pBase=&obj;pBase->show();pBase=&D_obj;pBase->show();3、#include <iostream.h>class complexpublic: complex(int r,int i):real(r),imag(i) friend complex operator+(complex &); friend complex operato

40、r-(complex ); void print()  cout<<"("<<real<<","<<imag<<")"<<endl; private: int real,imag;complex operator+(complex &o) o.real+; o.imag+; return o;complex operator-(complex o) o.real-;&

41、#160;o.imag-; return o;void main() complex a(1,2),b(3,4); +a; a.print(); -b; b.print();五、编程题(每小题15分,共30分)1、建立一个Student类,含有私有的学号(字符型)、姓名(字符型)、年龄(整型)数据成员。用new自动为Student的对象分配内存,并将学号“0504020101”,姓名“张三”,年龄20存入内存的相应域中,把该的信息显示出来。2、建立普通的基类Animal,用来存储一座楼房的层数、房间数以及它的总面积数。建立派生类hou

42、se,继承building,并存储下面的内容:卧室与浴室的数量,另外,建立派生类office,继承building,并存储灭火器与电话的书面。在主程序中,分别建立对象显示各对象所有的数据成员。注:请用炭素墨水书写、字迹要求工整、并抄写在方框线内       共   页,  第   页,试题参考答案及评分细则(2007  -2008  学年第 1 学期)面向对象程序设计 课程(A卷)   计算机  院(系)   

43、60;         班级应试学生人数        实际考试学生人数        考试时量  100分钟    命题教师     审核人:        考试时间:    年 

44、0;  月    日1. 一、简答题(每小题5分,共20分)1答:类就是相同的数据和相同的一组对象的集合,即,类是对具有相同数据结构和相同操作的一类对象的描述;对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体,对象可以认为是:数据操作;类和对象之间的关系是抽象和具体的关系。2答:构造函数主要用于为对象分配空间,进行初始化。构造函数除了具有一般成员函数的特征外,还具有一些特殊的性质:(1)构造函数的名字必须与类名相同(2)构造函数可以有任意类型的参数,但不能指定返回类型。它有隐含的返回值,该值由系统内部使用。(3)构造函数

45、是特殊的成员函数,函数体可写在类体内,也可写在类体外。(4)构造函数可以重载,即一个类中可以定义多个参数个数或参数类型不同的构造函数。(5)构造函数被声明为公有函数,但它不能像其他成员函数那样被显式地调用,它是在定义对象的同时被调用的。 析构函数也是一种特殊的成员函数。它执行与构造函数相反的操作,通常用于撤消对象时的一些清理任务,如释放分配给对象的内存空间等。析构函数有以下一些特点:(1)析构函数与构造函数名字相同,但它前面必须加一个波浪号();(2)析构函数没有参数,也没有返回值,而且不能重载。因此在一个类中只能有一个析构函数;(3)当撤消对象时,编译系统会自动地调用析构函数。 3答:三种继

46、承方式(公有public、保护protected、私有private);继承性可参见教材P143。4答:(1)对双目运算符而言,成员运算符函数带有一个参数,而友元运算符函数带有两个参数;对单目运算符而言,成员运算符函数不带参数,而友元运算符函数带一个参数。  (2)双目运算符一般可以被重载为友元运算符函数或成员运算符函数,但某些情况,必须使用友元函数。 1. 二、选择题(每小题2分,共20分) 110A  A  B  B  B  C  C  D  B  B1. 三、填空题(每空1分,共10分)(

47、1)AB:bb  (2)基类 (3)派生类 (4)派生类 (5)基类 (6)状态标志字 (7)公有派生类对象 (8)virtual 函数类型 函数名(参数表)=0; (9)AB operator+(); (10)AB operator+(int);1. 四、写出下面程序的运行结果(每小题5分,共20分) 1. Constructing base classConstructing base classConstructing derived classDestructing derived classDestructing base classDestructing base cla

48、ss2This is Base class  This is Base class329  23  25  50  29  314(2,3)  (3,4)1. 五、编程题(每小题10分,共30分)略.注:请用炭素墨水书写、字迹要求工整、并抄写在方框线内       共   页,  第   页,考试试题参考答案及评分细则(2007  -2008  学年第 1 学期)面向对象程序设计 课程(A卷)  计算机、网络 专业                班级应试学生人数        实际考试学生人数    &#

温馨提示

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

评论

0/150

提交评论