




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档装订线考试科目:面向对象程序设计 考试方式:闭卷 试卷类型:A 学期:20102011学年第一学期题号一二三四五总得分得分阅卷人得分一、选择题(每题1分,共15分)1、假设已经有了定义“char *const name=”chen”;”下面的语句中正确的是( A )Aname3=q;Bname=”lin”;Cname=new char5;Dname=new char(q);2、函数原型语句正确的是( B )Aint function(void a);Bvoid function(int);Cint function(a);Dvoid int(double a);3、重载函数在调用时选择的依据中,( B )是错误的。A函数名字B函数的返回类型C参数个数D参数的类型4、在( A )情况下适宜采用内联函数。A函数代码小,频繁调用B函数代码多,频繁调用C函数体含有递归语句D函数体含有循环语句5、下列描述中,( C )是错误的。A内联函数主要解决程序的运行效率问题B内联函数的定义必须出现在内联函数第一次被调用之前C内联函数中可以包括各种语句D对内联函数不可以进行异常接口声明6、在C+中,关于下列设置默认参数值的描述中,( B )是正确的。A不允许设置默认参数值B在指定了默认值的参数右边,不能出现没有指定默认值的参数C只能在函数的定义性声明中指定参数的默认值D设置默认参数值时,必须全部都设置7、下面有关重载函数的说法中正确的是( C )A重载函数必须具有不同的返回值类型B重载函数形参个数必须不同C重载函数必须有不同的形参列表D重载函数名可以不同8、关于new运算符的下列描述中,( D )是错误的A它可以用来动态创建对象和对象数组B使用它创建的对象或对象数组可以使用运算符delete删除C使用它创建对象时要调用构造函数D使用它创建对象数组时必须指定初始值9、关于delete运算符的下列描述中,( C )是错误的。A它必须用于new返回的指针B使用它删除对象时要调用析构函数C对一个指针可以使用多次该运算符D指针名前只有一对方括号符号,不管所删除数组的维数10、在多继承构造函数定义中,几个基类构造函数用( C )分隔。A :B ;C ,D :11、设置虚基类的目的是( B )。A简化程序B 消除二义性C 提高运行效率 D减少目标代码12、下列关于纯虚函数与抽象类的描述中,错误的是( C )。A纯虚函数是一种特殊的函数,它允许没有具体的实现B抽象类是指具有纯虚函数的类C一个基类的说明中有纯虚函数,该基类的派生类一定不再是抽象类D抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出13、通常拷贝构造函数的参数是( C) A某个对象名 B某个对象的成员名 C某个对象的引用名 D某个对象的指针名14、在下面有关对构造函数的描述中,正确的是( B )A构造函数可以带有返回值; B构造函数的名字与类名完全相同;C构造函数必须带有参数; D构造函数必须定义,不能默认。15、在下面有关析构函数特征的描述中,正确的是( C )A一个类中可以定义多个析构函数; B析构函数名与类名完全相同;C析构函数不能指定返回类型; D析构函数可以有一个或多个参数。共3页第1页 试 题 专 用 纸(附页)装订线 得分三、请写出下列程序的运行结果(每题5分,共20分)1. #include class Sample int x; public: Sample(); Sample(int a)x=a; Sample(Sample &a)x=a.x+1; void disp()coutx=xendl; ; void main() Sample s1(2),s2(s1); s2.disp(); 3. #includevoid swap(int *x,int &y);void main()int a=13,b;b=a%5;couta=a,b=bendl;swap(&a,b);couta=a,b=bendl;void swap(int *x,int &y)int temp=*x;*x=y;y=temp; 2. include classBASE charc1; public: BASE(charn):c1(n) virtualBASE()cout c1; ; classDERIVED:publicBASE charc2; public: DERIVED(charn):BASE(n+1),c2(n) DERIVED()coutc2; voidmain() DERIVED(X); 4. #includeclass Studentpublic: virtual void display()cout“UnderGraduate”; ;class GraduateStudent :public Studentpublic: virtual void display()cout“Graduate”; ;void fn(Student& x)x.display();void main() Student s; GraduateStudent gs;fn(gs); fn(s); 得分四、编程题(第1题10分,第2题14分,第3题20分,共44分)1逆反01串,按输入的01串输出对应的10串,如:输入0111001010,则输出1000110101。2创建一个Furniture(家具)类,并由该类派生Bed(床)类和Sofa(沙发)类,再由Bed类和Sofa类派生SleeperSofa(沙发床)类。(采用虚拟继承)3创建一个RationalNumber(分数)类,使其具备以下功能:1)创建一个构造函数,防止分母为0,对不是化简形式的分数进行化简,并避免分母为负数。2)为该类重载加、减、乘、除运算符。3)创建一个成员函数printRational(),用来输出分数,如:5/7 。17对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( ) A公有类型 B私有类型 C保护类型 D友元类型 18在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是( ) A友元函数 B虚函数 C构造函数 D析构函数 19类的析构函数的作用是( ) A一般成员函数的初始化 B类的初始化 C对象的初始化 D删除类创建的对象20下列说法正确的是( ) A内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 B内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 C类的内联函数必须在类体内定义 D类的内联函数必须在类体外通过加关键字inline定义21关于类概念的描述中,( )是错误的。A类是抽象数据类型的实现; B类是具有共同行为的若干对象的统一描述体;C类是创建对象的样板; D类不是C中的一种数据类型;22下面对于友元函数描述正确的是( ) A友元函数的实现必须在类的内部 B友元函数是类的成员函数 C友元函数破坏了类的封装性和隐藏性 D友元函数不能访问类的私有成员23在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( ) A派生类的对象可以赋给基类的对象 B派生类的对象可以初始化基类的引用 C派生类的对象可以直接访问基类中的成员 D派生类的对象的地址可以赋给指向基类的指针24有如下数组声明int num10;,下标值引用错误的是( ) Anum10 Bnum5 Cnum3 Dnum025通常拷贝构造函数的参数是( ) A某个对象名 B某个对象的成员名 C某个对象的引用名 D某个对象的指针名答案:12345678910111213141516171819202122232425 得分二、填空题(每空2分,共16分) 1C+程序是从_ 函数开始执行的。2在用class定义一个类时,数据成员和成员函数的默认访问权限是_ 。3全局数据区的整个区域在程序启动时,初始化为_。4C+编译器能够根据函数参数的类型、数量和排列顺序的差异,来区分同名函数,这个技术称为_技术。 5一个操作随着所传递或捆绑的对象类型的不同能够做出不同的反应,其行为模式称为_。6赋值操作符的结合性为_。7在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是_。8私有继承时基类中的public成员在派生类中是_的。(填访问控制符)答案:12345 得分一、填空题(每空1分,共20分) 得分二、选择题(每题2分,共10分)共3页第2页 装订线得分二、填空题(每空2分,共10分) 1、在用class定义一个类时,数据成员和成员函数的默认访问权限是_private_ 。(填访问控制符)2、C+支持_重载_,使得编译器能够根据函数参数的类型、数量和排列顺序的差异,来区分同名函数。3、面向对象程序设计的基本特征包括抽象、封装、_继承_和_多态_。 4、保护继承时基类中的public成员在派生类中是_protected_的。(填访问控制符)得分三、请写出下列程序的运行结果(每题5分,共20分)1.#includeusing namespace std;int i=15;int main() int i; i=100; :i=i+1; cout:iendl; return 0; 1012. #includeusing namespace std;class example public: example(int n)i=n; coutConstructingn; example()coutDestructingn; int get_i()return i;private: int i;int sqr_it(example o)return o.get_i()*o.get_i();int main() example x(10); Constructing coutx.get_i()endl; 10 coutsqr_it(x) endl; Destructingreturn 0; 100 Destructing3. #includeusing namespace std;class base1 public: base1( )coutclass base1 endl; ;class base2 public: base2( )coutclass base2 endl; ;class level1:public base2, virtual public base1 public: level1( )coutclass level1 endl; ;class level2:public base2, virtual public base1 public: level2( )coutclass level2 endl; ;class toplevel:public level1, virtual public level2 public: toplevel ( )coutclass toplevel endl; ;int main( ) toplevel obj; return 0; class base1 class base2 class level2 class base2 class level1class toplevel4. #includeusing namespace std;class Base public: Base(int x,int y) a=x; b=y; virtual void show() coutBasen; couta bendl;private: int a,b; ;class Derived : public Basepublic: Derived(int x,int y,int z):Base(x,y)c=z; void show() cout Derivedn; coutcshow(); Base pc=&mc; pc-show(); 60 60return 0; Derived 30 装订线得分四、程序填空:请在划横线位置填写适当的内容以完善程序(每空4分,共20分)1. class Base public: void set(int x) r=x; virtual void display()=0 ; / 纯虚函数display ( )protected: int r;class Derived:public Base public: void display() coutThis is Derived endl; / 重定义虚函数display ( )2. #includeusing namespace std; inline double circle(double r) / 内联函数 return 3.1416*r*r; int main() double i=2.5 coutarea= circle(i)endl; return 0; 3. class Base public: Base(int a,int b) /基类的构造函数 coutConstructing base classn; x=a;y=b; private: int x; int y; ; class Derive :public Base public: Derive(int a,int b,int c): Base(a,b); /派生类构造函数 coutConstructing derived classendl; z=c; private: int z;4. class girl public: girl(char *n,int d) name=new charstrlen(n)+1; strcpy(name,n); age=d; friend void display(girl &) ; /声明友元函数 girl() delete name ; /析构函数,释放存储空间 private: char *name; int age;void display(girl &x) /定义友元函数 coutGirls name is ,age:x.agen; 得分五、程序设计(共35分)1、按以下框架设计一个用来表示直角坐标系的Location类。(23分)class Locationdouble x;double y; public:Location(double,double); /构造函数(3分)void Setx(double); /设置x坐标的值(3分)void Sety(double); /设置y坐标的值(3分)double Getx(); /取x坐标的值(3分)double Gety(); /取y坐标的值(3分)double distance(Location &);/成员函数,求给定两点之间的距离(4分)friend double distance(Location &,Location &); /友元函数,求给定两点之间的距离(4分)2、按以下框架设计一个Time类,用来保存时、分、秒,通过重载操作符“+”实现两个时间的相加。要求将小时范围限制为大于等于0,分钟和秒范围限制在0-59。(12分)class Timeint hours;int minutes;int seconds; public:Time(int h=0,int m=0, int s=0); /构造函数(3分)Time operator+(Time &); /运算符重载,实现两个时间的相加(5分)void disptime(); /输出时间,格式为“时:分:秒”(4分)答案:一、选择题(每小题1分,11515分)123456789101112131415ABBACBCDCCBCCBC二、填空题(每空2分,共10分) 1234private重载继承、多态protected三、请写出下列程序的运行结果(每空5分,5420分)1234101Contructing10Destructing100Destructingclass base1class base2class level2class base2class level1class toplevelBase60 60Derived30四、程序填空:请在划横线位置填写适当的内容以完善程序(每空4分,4520分)1234virtual void display()=0inline Base(a,b)friend void display(girl &)delete name五、程序设计(共35分)1、Location:Location(double a,double b) /构造函数(3分) x=a;y=b;void Location:Setx(double a) /设置x坐标的值(3分) x=a;void Location:Sety(double b) /设置y坐标的值(3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司咖啡室使用管理制度
- 旅游公司应急管理制度
- 亚马逊运营店长管理制度
- 公司管理项目部管理制度
- 学生餐配送公司管理制度
- 北京市房屋出租管理制度
- 压力灭菌锅安全管理制度
- 公司商务车派车管理制度
- 服务企业预算管理制度
- 公司岗位标准化管理制度
- 电机学知到智慧树章节测试课后答案2024年秋东北电力大学
- 2024-2025年燃气安全生产操作人员及管理人员安全知识考试题库与答案
- 2019北师大版高中英语单词表全7册
- 核技术在安检领域的应用
- 起重吊装演练方案
- 宁夏固原市第六中学2022-2023学年七年级上学期分班考试语文检测卷
- 煤矿综采队液压支架检修和维护管理制度
- 北师大版生物八年级下册23章1节生物的生存依赖一定的环境(44张)课件-课件
- 上海市闵行区2024年五年级数学第二学期期末学业水平测试试题含解析
- DL∕T 5342-2018 110kV~750kV架空输电线路铁塔组立施工工艺导则
- 2024江苏扬州市高邮市交通产业投资集团有限公司招聘17人笔试备考题库及答案解析
评论
0/150
提交评论