计09面向对象程序设计考试试卷(A卷)参考解答.doc_第1页
计09面向对象程序设计考试试卷(A卷)参考解答.doc_第2页
计09面向对象程序设计考试试卷(A卷)参考解答.doc_第3页
计09面向对象程序设计考试试卷(A卷)参考解答.doc_第4页
计09面向对象程序设计考试试卷(A卷)参考解答.doc_第5页
全文预览已结束

下载本文档

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

文档简介

课程名称: 面向对象程序设计 ( A卷 闭卷)适用专业年级:计算机科学与技术09级 考试时间: 100分钟(参考解答)题号一二三四五六七八九十总分统分人 签名题分102410261020100得分考生注意事项:1、本试卷共 3 页,试卷如有缺页或破损,请立即举手报告以便更换。 2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。(答案请写在密封线内和答卷正面,否则不记分)一、判断题,正确的在下列表格中打,错误的打(每小题1分,共10分)123456789101在C+中,标识符Student和student是不一样的。( ) 2设函数fun( )是一个不属于任何类的普通函数,则在调用该函数时只能用fun()方式,而不能用:fun()方式来调用。( )3类的构造函数不能声明为虚构造函数。( )4使用MFC编程时,如果要执行窗体重绘函数OnDraw,可以通过Invalidate或者InvalidateRect函数来实现。( )5char *const p 表明p是一个指针,它只能指向一个字符串常量。( )6在定义二维数组时,语句“int Sum2=1,2,3,;”是正确的。( )7在C语言中,不使用命名空间,但在C+程序中,一定要使用命名空间。( )8在C+中,文件的输入输出可以通过iostream类对象来完成。( )9. 在编程中,有了面向对象的程序设计方法后,就不要用面向过程的程序设计方法了。( )10. 类中的静态成员数据为该类的所有成员所共享,在初始化后,它的值不能被修改。( )二、简答题(每小题8分,共24分)1什么是类?什么是对象?什么是面向对象程序设计?答:类:是指具有相同的属性和操作方法,并遵守相同规则的对象的集合 。(2分)对象:是包含现实世界物体特征的抽象实体,每个对象有内部的属性和操作方法。(2分)面向对象的程序设计:它吸取了面向过程的程序设计的优点,同时又考虑了现实世界和计算机处理的关系,它的整个程序由一系列相互作用的对象构成,对象之间的交互通过发送消息来实现,对象通过响应消息来实现程序的功能。(4分)2多态性是指什么?编译时的多态性和运行时的多态性在实现方法上有何不同?多态性是指:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法)。(4分)编译多态性也称静态多态性,它是通过函数重载和运算符重载实现的。(2分)运行多态性也称动态多态性,它是通过继承和虚函数来实现的。(2分)3什么是简单继承?什么是多重继承? 如果不想再往下继承的类的功能可以采用什么样的继承方式? 简单继承:派生类的基类只有一个的继承方法。(3分) 多重继承:派生类的基类同时有多个时的继承方法。(3分)可以采用私有继承方式来隐藏基类的属性。(2分)三、填空题(每空2分,共10分) 1下面递归函数NTimes (n,m)求nm 。填充程序中不完整的部分(假设m=0,否则返回值为0)。int NTimes (int n,int m) /递归函数NTimes (n,m)求nm。解答 (1) return 1(2) n*Ntimes(n,m-1)(评分标准:每空2分等价写法给满分) if (mNext(4) return 1(5) p-Next(评分标准:每空2分等价写法给满分) if (pHead=NULL) return 0; p = _(3)_;while (p!=NULL) if(p=pHead) _(4)_; else p = _(5)_; return 0; 四、阅读下面的程序,写出程序运行的结果。(共26分)1程序1(6分)#include 解答:(评分标准:每对一个得1分,全对得6分。)程序1的运行结果如下:5 6 96 12 16using namespace std;int myfun(int &x,int *p)int i=0;i = x+;i+=(*p)+;return(i);int main()int a=4,b=5,c;while(b)c=myfun(a,&b); couta b c10) b=0;else b=b+5; return 0;2. 程序2(10分)#include /Toy-carclass CToypublic:CToy( ) coutCreate CToy.endl; CToy(char color) coutCreate CToy:colorendl;CToy( ) coutdelete CToy.endl;class CCarpublic:CCar(int Tire=4)coutcreate CCar:Tireendl;CCar( )coutdelete CCar.endl;class CToy_Car:public CToy,public CCarpublic:CToy_Car(int p ):member(), CCar(p ),CToy() coutcreate CToy_Car.endl;CToy_Car( )coutdelete CToy_Car.endl;private:CToy member;void main( ) CToy_Car toyc(4); 2. 程序2(评分标准:每对一行给1分,全部正确给10分)答:程序运行结果为:Create CToy.create CCar:4Create CToy.create CToy_Car.delete CToy_Car.delete CToy.delete CCar.delete CToy.湖南工业大学考试试卷纸系(院) 计算机与通信学院 课程名称 面向对象程序设计 班级 姓名 学号 密封线第 2 页 共4 页 3. 程序3(10分)#include class Pen public:char color; Pen() coutPen Begin.endl;virtual void write( ) coutPen write.endl; void Rewrite() write();class Pencil: public Penpublic: virtual void write( ) coutPencil write.write();pt1 = &pencil1;pt1-write();pt1-Rewrite();五、理解问答题(10分)说明:读懂如下程序,回答题后的问题。#include class Complex private: float real, imag;public:Complex(float r=0, float i=0 ) real=r; imag=i;void Display() cout 0) cout+imagi ;else if (imag0) coutimagi ;cout endl;Complex operator+ (Complex &b );friend Complex operator- ( Complex &a, Complex &b ); ; Complex Complex:operator+ (Complex &b) Complex *t = new Complex (_(1)_); /标记行1return *t; /标记行2 Complex operator- ( Complex &a, Complex &b ) Complex *t = new Complex (a.real b.real, a.imag b.imag); return *t; void main()Complex c1(4.0,5.0), c2(2.0,-7.0), c3;c3=c1+c2;c3.Display();c3=c1-c2;c3.Display();请回答的问题:(1)补充程序中标记行1所在的(1)空,使程序完整。(2分)(2)标记行1使用new来创建一个对象,但程序中没有用到delete来销毁对象,程序执行会存在潜在问题。如果不用new语句,改用其他语句来替代标记行1和标记行2所在的语句,使程序功能一致。写出修改后的语句(语句条数不限)。(3分)(3)简述运算符重载函数作为类成员函数和友元函数时的主要区别。(2分)(4)写出程序运行的结果。(3分)湖南工业大学考试试卷纸系(院) 计算机与通信学院 课程名称 面向对象程序设计 班级 姓名 学号 密封线第 3 页 共 4 页 解答:(1): (评分标准:程序功能上等价全对得2分)real + b.real, imag + b.imag(2): (评分标准:程序功能上等价得全分3分,如有错,酌情扣分)Complex t;t.real = real + b.real;t.image = image + b.image;return t; (3) (评分标准:每对一个得1分,全对得2分)作为类的成员函数时:第一个参数是类对象本身,要省略。 作为友员函数时:参数都要写出来,没有省略的。 (4) 程序运行的结果为: (评分标准:错一行扣1分,全对得3分)6-2i2+12i六、编程题(20分)定义一辆自行车类Bike,它的公有数据成员有Mode(型号,为string型),Color(颜色,为char型),Price(价格,为float型)。私有的数据成员有Ower(拥有者,为string型)。公用成员函数有:GetOwer( ),它返回该车的拥着者Ower;SetOwer(string OwerValue ),它设置该车的拥着者Ower。Bike类的构造函数原型为:Bike(string BMode=飞鹤2011,char BColor= R, float BPrice=200.00), 初始化Ower为空。要求:(1) 编写类Bike,并编写一个主程序,主程序中定义2个自行车对象(其中有一辆车的参数为默认参数,另一辆车参数可以是任意有效值)。(2)重载输出流,使它能输出自行车类的对象(即输出Bike类对象的所有数据成员,然后使用该输出流输出前2辆车的基本信息。(3)定义一个输出文件BikeFile.txt,把上述两辆车对象的Ower输出到这个文件中。解答:(全部正确得满分,部分错误,酌情扣分。等价写法给全分)#include #include #include using namespace std;class Bikepublic:string Mode; char Color;float Price;private:string Ower;public:string GetOwer( ) return Ower;void SetOwer(string OwerValue ) Ower = OwerValue;Bike(string BMode=飞鹤2011,char BColor= R, float BPrice=200.00)Mode = BMode;Color = BColor;Price = BPrice; Ower = ;friend ostream& operator(ostream &Output,Bike &B);ostream& operator(ostream &Output,Bike &B)int main()Bike b1,b2(永久牌,

温馨提示

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

评论

0/150

提交评论