




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京化工大学北方学院20102011学年第一学期面向对象程序设计C+期末考试试卷(A)班级: 姓名: 学号: 分数: 题号一二三四总分得分试卷说明:本套试题共四个大题,全部题目都答在答题纸上,写在其他地方无效。(答题纸在本套试卷的第9页上)一、选择题(每小题2分,共40分)1、下列描述中,不属于面向对象思想主要特征的是( )。A. 封装性 B. 多态性 C. 继承性 D. 跨平台2、若定义:string str; 当语句cinstr; 执行时,从键盘输入:Microsoft Visual Studio 6.0!所得的结果是str=( )。A. Microsoft Visual Studio 6.0! B. MicrosoftC. Microsoft Visual D. Microsoft Visual Studio 6.03、考虑下面的函数原型声明:void test (int a,int b=7,char z=*);下面函数调用中,不合法的是( )。A. test (5); B. test (5,8); C. test (5,#); D. test (0,0,*);4、已知函数fun的原型为int fun(int, int, int);下列重载函数原型中错误的是( )。A. char fun(int, int); B. double fun(int, int, double);C. int fun(int, char*); D. float fun(int, int, int);5、下列表示引用的方法中,( )是正确的。已知:int a=1000;A. int &x=a; B. char &y; C. int &z=1000; D. float &t=&a;6、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( )。A. 内联函数 B. 重载函数 C. 递归调用 D. 嵌套调用7、下列有关C+类的说法中,不正确的是( )。A. 类是一种用户自定义的数据类型B. 只有类中的成员函数或类的友元函数才能存取类中的私有成员C. 在类中,如果不做特别说明,所有成员的访问权限均为私有的D. 在类中,如果不做特别说明,所有成员的访问权限均为公用的8、Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是( )。 Sample a2, *P = new Sample;A. 0 B. 1 C. 2 D. 39、下面说法中,正确的是( )。A. 一个类只能定义一个构造函数,但可以定义多个析构函数B. 一个类只能定义一个析构函数,但可以定义多个构造函数C. 构造函数与析构函数同名,只要名字前加了一个求反符号()D. 构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以10、已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,( )是正确的。 A. const void print( ); B. void print( ) const; C. void const print( ); D. void print(const);11、通过派生类的对象可直接访问其( ) A. 公用继承基类的公用成员 B. 公用继承基类的私有成员C. 私有继承基类的公用成员 D. 私有继承基类的私有成员12、下列关于虚基类的描述中,错误的是( )。 A. 使用虚基类可以消除由多继承产生的二义性 B. 构造派生类对象时,虚基类的构造函数只被调用一次 C. 声明“class B : virtual public A”说明类B为虚基类D. 建立派生类对象时,首先调用虚基类的构造函数13、下面( )的叙述不符合赋值兼容规则。A. 派生类的对象可以赋值给基类的对象B. 基类的对象可以赋值给派生类的对象C. 派生类的对象可以初始化基类的对象D. 派生类的对象的地址可以赋值给指向基类的指针14、建立一个含有成员对象的派生类对象时,各构造函数的执行次序为( )。 A. 派生类 成员对象类 基类 B. 成员对象类 基类 派生类 C. 基类 成员对象类 派生类 D. 基类 派生类 成员对象类15、关于虚函数的描述中,( )是正确的。 A. 虚函数是一个static类型的成员函数 B. 虚函数是一个非成员函数 C. 基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数 D. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型16、下面关于友元的描述中,错误的是( )。A. 友元函数可以访问该类的私有数据成员B. 一个类的友元类中的成员函数都是这个类的友元函数C. 友元可以提高程序的运行效率D. 类与类之间的友元关系可以继承17、有如下类定义:class Pointprivate:static int how_many; how_many=0;要初始化Point类的静态成员how_many,下划线处应填入的内容是( )。A. int B. static int C. int Point: D. static int Point:18、已知表达式+i中的“+”是作为成员函数重载的运算符,则与+i等效的运算符函数调用形式为( )。A. i.operator+() B. operator+(i) C. operator+(i,1) D. i.operator+(1)19、有如下模板声明: template class A; 下列声明中,与上述声明不等价的是( )。 A. template class A; B. template class A; C. template class A; D. template class A;20、下列的各类函数中,( )不是类的成员函数A. 构造函数 B. 析构函数 C. 友元函数 D. 复制构造函数二、填空题(前14个空,每空1分,后3个空,每空2分,共20分)1、类和对象的关系可表述为:类是对象的 ,而对象则是类的 。2、C+中的函数参数传递方式有三种,它们是:值传递,地址传递和 。3、静态成员函数没有隐含的 ,所以,在C+程序中,静态成员函数主要用来访问静态数据成员,而不访问非静态成员。4、在图1中,A,B,C,D,E,F均是类,其中属于单继承的派生类有 ,属于多继承的派生类有 ,类F的基类有 ,类A的派生类有 。 ABCDEF图1 类的继承层次图 ABCD图2 多重继承5、在图2所示的继承层次结构中,如果只想在公共派生类D中保留公共基类A的成员一份,就必须使用关键字virtual把这个公共基类A声明为 。6、如果一个类包含一个或多个纯虚函数,则该类称为 。7、从实现的角度来讲,多态性可以划分为两类: 和 。8、列出C+中的两种代码复用方式: 和 。9、假定A是一个类名,则该类的复制构造函数的原型声明语句为: 。10、若要把void fun()定义为类A的友元函数,则应在类A的定义中加入语句 。11、后置自减运算符“- -”重载为类的成员函数(设类名为A)的形式为: 。三、阅读下面3个程序,写出程序运行时输出的结果。(共15分)(注意:此题的答案要写在答题纸上,作答时请写清题号)1、#includeusing namespace std;void fun(int &a, int &b) int p; p=a; a=b; b=p;void exchange(int &a, int &b, int &c) if( ab ) fun(a, b); if( ac ) fun(a, c); if( bc ) fun(b, c);int main() int a=11,b=88,c=66; exchange(a, b, c); couta=a,b=b,c=cendl; return 0;2、#include using namespace std;class Apublic:A()coutA:A() called.n;virtual A()coutA:A() called.n; class B: public Apublic:B(int i) coutB:B() called.n;buf=new chari;virtual B() delete buf; coutB:B() called.n;private:char *buf;int main() A *a=new B(15);delete a;return 0;3、#include using namespace std;class Toy public: Toy() strcpy(name, ); count+; Toy(char* _n) strcpy(name, _n); count+; Toy() count-; char* GetName() return name; static int getCount() return count; private: char name10; static int count; ; int Toy:count=0; int main() Toy t1,t2(Snoopy); coutt2.getCount()endl; coutt2. GetName()endl; Toy t3, t4(Mickey); coutt4.getCount()endl; coutt4. GetName()endl;coutToy:getCount()endl; return 0; 四、编程题(25分)(注意:此题的答案要写在答题纸上,作答时请写清题号)1、(8分)在下面的C+源程序文件main.cpp中,定义了一个用于表示日期的类Date,但类Date的定义并不完整,请按要求完成下列操作,将类Date的定义补充完整。(1)定义私有数据成员year,month和day分别用于表示年,月,日,它们都是int型的数据。请在处添加适当的语句。(2)完成默认构造函数Date的定义,使Date对象的默认值为:year=1,month=1,day=1,请在处添加适当的语句。(3)完成重载构造函数Date(int y, int m, int d)的定义,把数据成员year,month和day分别初始化为参数y,m,d的值,请在处添加适当的语句。(4)完成成员函数print的类外定义,使其以“年月日”的格式将Date对象的值输出到屏幕上请在注释请在处添加适当的语句。C+源程序文件main.cpp清单如下:/main.cpp #include using namespace std;class Datepublic: Date(int y,int m,int d) void print() const; private: / date members ; void Date:print() const int main() Date national_day(1949,10,1); national_day.print(); return 0; 2、(9分)下列Shape类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个用以求不同形状的图形面积总和的普通函数。class Shapepublic:virtual double area()=0;double total(Shape *s , int n) double sum=0.0; for(int i=0; iarea( );return sum; 要求:(1)从Shape类派生圆类(Circle),圆类新增数据成员半径(radius),圆类的成员函数根据题目需要自定。(2)写出main()函数,计算半径分别为1.1,2.2,3.3的3个圆面积之和(必须通过调用total函数计算)。3、(8分)设计一个函数模板,实现从int、double、char、string类型的数组中找
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 担保协议书有效
- 舞蹈培训班协议书
- 二手房买房协议书范本
- 房屋出售协议书
- 协议书写错名字有效
- 花草摆放协议书
- 勘察设计注册岩土工程师考试(岩土专业基础)全真题库及答案(2025年川省)
- 房屋产权变更协议书
- 健康检查服务推广
- 房屋租赁管理协议模板
- Ice-O-Matic CIM登峰系列制冰机培训手册
- 《穴位埋线疗法》课件
- 【大型集装箱船舶港口断缆事故预防应急处理及案例探析7500字(论文)】
- 发展汉语-初级读写-第一课-你好
- 律师事务所人事管理制度
- 高中英语完形填空高频词汇300个
- 2023-2025年世纪公园综合养护项目招标文件
- 脑梗塞并出血护理查房
- 男朋友男德守则100条
- 医院感染科室院感管理委员会会议记录
- 鲁班锁制作技术
评论
0/150
提交评论