《c面向对象程序设计考试试题》由会员分享,可在线阅读,更多相关《c面向对象程序设计考试试题(15页珍藏版)》请在人人文库网上搜索。
1、大学考试试题纸( A 卷)(2007 -2008 学年第 1 学期)面向对象程序设计 课程 计算机 院(系) 班级考试时量 100分钟 学生人数 命题教师 系主任 交题时间: 年 月 日 考试时间: 年 月 日1. 一、简答题(每小题5分,共20分) 1. 什么是类?什么是对象?对象与类的关系是什么? 2. 构造函数和析构函数的主要作用是什么?他们各有什么特性? 3. 有哪几种继承方式?每种方式的派生类对基类成员的继承性如何? 4. 简要叙述友元运算符函数和成员运算符函数有什么不同点? 2. 二、选择题(每小题2分,共20分)1假设已经有定义const char *pName=”Student。
2、”;下面的语句错误的是 。ApName3=t; B. pName=”score”;C. pName=new char5; D. pName=new char(p);2. 在下面有关对构造函数的描述中,错误的是 。A. 构造函数可以带有返回值B. 构造函数的名字与类名完全相同C. 构造函数可以带有参数4. 构造函数可以缺省3在下面有关析构函数特征的描述中,正确的是 。A. 一个类中可以定义多个析构函数B. 析构函数名与类名完全相同C. 析构函数不能指定返回类型D. 析构函数可以有一个或多个参数4假定AB为一个类,则执行“AB a(4) , b3 , * p2 ;”语句时,自动调用该类构造函数的次。
3、数为 。A. 3 B. 4 C. 6 D. 95. 假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为 。A. AB operator+(AB &a,AB &b) B. AB operator+(AB &a)C. operator+(AB a) D. AB & operator+( )6. 假设定义了函数模版:templateT max(T x, T y) return (xy)?x:y; 并定义了:int i;char c;那么下列错误的调用该模版的是 。Amax(i,i); Bmax(c,c);Cmax(int(c),i); Dma。
4、x(c,i);7模版的主要用途是为了 。A提高代码的运行效率B实现多态性C提高代码的重用性D加强类的封装性8下列说法错误的是 。A申明为指向基类对象的指针可以指向它的公有派生的对象,但不允许指向它的私有派生的对象B允许将一个声明为指向基类的指针指向其公有派生类的对象,但是不能将一个声明为指向派生类对象的指针指向其基类的一个对象。C声明为指向基类对象的指针,当其指向公有派生类对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的成员D以上说法都不对9现有程序如下:#include #include void main()int kk=1234;coutclass 。
5、Base public: Base() coutclass Basepublic: void show()coutshow();pBase=&D_obj;pBase-show();3、#includeint arr=23,25,27,29,31;int &get_value(int i)return arri;void main()int i;coutclass complexpublic:complex(int r,int i):real(r),imag(i)friend complex operator+(complex &);friend complex operator-(comple。
6、x );void print()coutT max(T x, T y) return (xy)?x:y; 并定义了:int i;char c;那么下列错误的调用该模版的是 。Amax(i,i); Bmax(c,c);Cmax(int(c),i); Dmax(c,i);7模版的主要用途是为了 。A提高代码的运行效率B实现多态性C提高代码的重用性D加强类的封装性8下列说法错误的是 。A申明为指向基类对象的指针可以指向它的公有派生的对象,但不允许指向它的私有派生的对象B允许将一个声明为指向基类的指针指向其公有派生类的对象,但是不能将一个声明为指向派生类对象的指针指向其基类的一个对象。C声明为指向基类。
7、对象的指针,当其指向公有派生类对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的成员D以上说法都不对9现有程序如下:#include #include void main()int kk=1234;coutclass Base public: Base() coutclass Basepublic: void show()coutshow();pBase=&D_obj;pBase-show();3、#include class complexpublic:complex(int r,int i):real(r),imag(i)friend complex o。
8、perator+(complex &);friend complex operator-(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-;o.imag-;return o;void main()complex a(1,2),b(3,4);+a;a.print();-b;b.print();五、编程题(每小题15分,共30分)1、建立一个S。
9、tudent类,含有私有的学号(字符型)、姓名(字符型)、年龄(整型)数据成员。用new自动为Student的对象分配内存,并将学号“”,姓名“张三”,年龄20存入内存的相应域中,把该的信息显示出来。2、建立普通的基类Animal,用来存储一座楼房的层数、房间数以及它的总面积数。建立派生类house,继承building,并存储下面的内容:卧室与浴室的数量,另外,建立派生类office,继承building,并存储灭火器与电话的书面。在主程序中,分别建立对象显示各对象所有的数据成员。注:请用炭素墨水书写、字迹要求工整、并抄写在方框线内 共 页, 第 页,试题参考答案及评分细则(2007 -20。
10、08 学年第 1 学期)面向对象程序设计 课程(A卷) 计算机 院(系) 班级应试学生人数 实际考试学生人数 考试时量 100分钟 命题教师 审核人: 考试时间: 年 月 日1. 一、简答题(每小题5分,共20分)1答:类就是相同的数据和相同的一组对象的集合,即,类是对具有相同数据结构和相同操作的一类对象的描述;对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体,对象可以认为是:数据操作;类和对象之间的关系是抽象和具体的关系。2答:构造函数主要用于为对象分配空间,进行初始化。构造函数除了具有一般成员函数的特征外,还具有一些特殊的性质:(1)构造函数的名字必须与类名相同(2。
11、)构造函数可以有任意类型的参数,但不能指定返回类型。它有隐含的返回值,该值由系统内部使用。(3)构造函数是特殊的成员函数,函数体可写在类体内,也可写在类体外。(4)构造函数可以重载,即一个类中可以定义多个参数个数或参数类型不同的构造函数。(5)构造函数被声明为公有函数,但它不能像其他成员函数那样被显式地调用,它是在定义对象的同时被调用的。 析构函数也是一种特殊的成员函数。它执行与构造函数相反的操作,通常用于撤消对象时的一些清理任务,如释放分配给对象的内存空间等。析构函数有以下一些特点:(1)析构函数与构造函数名字相同,但它前面必须加一个波浪号();(2)析构函数没有参数,也没有返回值,而且不能。
12、重载。因此在一个类中只能有一个析构函数;(3)当撤消对象时,编译系统会自动地调用析构函数。 3答:三种继承方式(公有public、保护protected、私有private);继承性可参见教材P143。4答:(1)对双目运算符而言,成员运算符函数带有一个参数,而友元运算符函数带有两个参数;对单目运算符而言,成员运算符函数不带参数,而友元运算符函数带一个参数。 (2)双目运算符一般可以被重载为友元运算符函数或成员运算符函数,但某些情况,必须使用友元函数。 1. 二、选择题(每小题2分,共20分) 110A A B B B C C D B B1. 三、填空题(每空1分,共10分)(1)AB:bb 。
13、(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 class2This is Bas。
14、e classThis is Base class32923 25 50 29 314(2,3)(3,4)1. 五、编程题(每小题10分,共30分)略.注:请用炭素墨水书写、字迹要求工整、并抄写在方框线内 共 页, 第 页,考试试题参考答案及评分细则(2007 -2008 学年第 1 学期)面向对象程序设计 课程(A卷) 计算机、网络 专业 班级应试学生人数 实际考试学生人数 考试时量 100 分 钟 命题教师 审核人: 考试时间: 年 月 日一、简答题(每小题5分,共20分)1答:类就是相同的数据和相同的一组对象的集合,即,类是对具有相同数据结构和相同操作的一类对象的描述;对象是描述其属性的。
15、数据以及对这些数据施加的一组操作封装在一起构成的统一体,对象可以认为是:数据操作;类和对象之间的关系是抽象和具体的关系。2答:构造函数主要用于为对象分配空间,进行初始化。构造函数除了具有一般成员函数的特征外,还具有一些特殊的性质:(1)构造函数的名字必须与类名相同(2)构造函数可以有任意类型的参数,但不能指定返回类型。它有隐含的返回值,该值由系统内部使用。(3)构造函数是特殊的成员函数,函数体可写在类体内,也可写在类体外。(4)构造函数可以重载,即一个类中可以定义多个参数个数或参数类型不同的构造函数。(5)构造函数被声明为公有函数,但它不能像其他成员函数那样被显式地调用,它是在定义对象的同时被。
16、调用的。 析构函数也是一种特殊的成员函数。它执行与构造函数相反的操作,通常用于撤消对象时的一些清理任务,如释放分配给对象的内存空间等。析构函数有以下一些特点:(1)析构函数与构造函数名字相同,但它前面必须加一个波浪号();(2)析构函数没有参数,也没有返回值,而且不能重载。因此在一个类中只能有一个析构函数;(3)当撤消对象时,编译系统会自动地调用析构函数。 3答:三种继承方式(公有public、保护protected、私有private);继承性可参见教材P143。4答:(1)对双目运算符而言,成员运算符函数带有一个参数,而友元运算符函数带有两个参数;对单目运算符而言,成员运算符函数不带参数,。
17、而友元运算符函数带一个参数。 (2)双目运算符一般可以被重载为友元运算符函数或成员运算符函数,但某些情况,必须使用友元函数。 二、选择题(每小题2分,共20分)110A A B B B C C D B B三、填空题(每空1分,共10分)(1)AB:bb (2)基类 (3)派生类 (4)派生类 (5)基类 (6)状态标志字 (7)公有派生类对象 (8)virtual 函数类型 函数名(参数表)=0; (9)AB operator+(); (10)AB operator+(int);四、写出下面程序的运行结果(第1小题6分,第2、3小题7分,共20分)1. Constructing base classConstructing base classConstructing derived classDestructing derived classDestructing base classDestructing base class2This is Base classThis is Base class3(2,3)(3,4)五、编程题(每小题15分,共30分)略.注:请用炭素墨水书写、字迹要求工整、并抄写在方框线内 共 页, 第 页。