面向对象设计试卷9.doc

上传人:wux****ua 文档编号:9125021 上传时间:2020-04-03 格式:DOC 页数:10 大小:105KB
返回 下载 相关 举报
面向对象设计试卷9.doc_第1页
第1页 / 共10页
面向对象设计试卷9.doc_第2页
第2页 / 共10页
面向对象设计试卷9.doc_第3页
第3页 / 共10页
点击查看更多>>
资源描述
面向对象程序设计试题(9)题序一二 三四五总 分分数1820201428100得分一 单选题(每小题1.5分,共18分)1下列关于结构体的说法错误的是( )。A结构体是由用户自定义的一种数据类型B结构体中可设定若干个不同数据类型的成员C结构体中成员的数据类型可以是另一个已定义的结构体D在定义结构体时,可以为成员设置默认值2类的析构函数的作用是( )。A. 删除对象后的善后工作 B.类的初始化 C.对象初始化 D. 一般成员函数3下面对于友元函数描述正确的是( )。A.友元函数的实现必须在类的内部定义B.友元函数是类的成员C. 友元函数不能访问类的私有成员D. 友元函数破坏了类的封装性和隐藏性4为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为( )。 A. protected B. public C.private D. static5下面对静态数据成员的描述中,正确的是( )。A.静态数据成员是类的所有对象共享的数据B.类的每一个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象调用6继承具有( ),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。 A)规律性 B.传递性 C.重复性 D.多样性7下列对继承的描述中,错误的是( )。A. 析构函数不能被继承B. 派生类也是基类的组合C. 派生类的成员除了它自己的成员外,还包含了它的基类的成员D. 派生类中继承的基类成员的访问权限到派生类保持不变8下列说法错误的是( )。A. 公有继承的基类中的public成员在派生类中仍是public的B. 公有继承的基类中的private成员在派生类中仍是private的C. 私有继承的基类中的public成员在派生类中变成private的D. 保护继承的基类中的public成员在派生类中变成protected的9C+类体系中,不能被派生类继承的有( )。A.构造函数 B.虚函数 C.静态成员函数 D.赋值成员函数 10关于虚函数的描述中,正确的是()。 A虚函数是一个静态成员函数 B虚函数是一个非成员函数 C虚函数即可以在函数说明定义,也可以在函数实现时定义 D派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型11关于纯虚函数和抽象类的描述中,错误的是( )。 A纯虚函数是一种特殊的虚函数,它没有具体的实现 B抽象类是指具体纯虚函数的类 C一个基类中说明有纯虚函数,该基类派生类一定不再是抽象类 D抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出12以下( )成员函数表示虚函数。 Avirtual int vf(int); Bvoid vf(int)=0; Cvirtual void vf(int) ; D virtual void vf()=0; 二、填空题(第1题第8题每空1分,第9题6分,共20分)1面向对象方法构造的系统,其基本单位是_。2建立类和类的对象时,系统对 不分配内存,系统对 分配内存。3在C+中,编译时的多态性是通过_实现的,而运行时的多态性则是通过_实现的。4生成一个派生类对象时,先调用 的构造函数,然后调用 的构造函数。5AA operator +(AA x )表示为 。6类的成员按访问权限可分为三类: 公有 、 、 。7. 类是对象的 ;而对象则是类的具体 。8. 在C+中定义类时,通常是利用 描述对象的“特征”; 利用 描述对象的“行为”。9.假定给定下列的程序代码,请写出类和类的成员及它们的访问权限。 class A B类成员访问权限 C类成员访问权限 int a; protected: int y(); public: A(); friend void cal(); void show(); ; class B:private A int z(); public: B(); void display(); ; class C:public B int set(); public: C(); C(); ;三、写出下列程序运行结果(每题4分,共20分)1#include #include 运行结果:struct AAA char ch20 ; float b; ;void f(AAA &y)strcpy(y.ch,”Zhao”); y.b=70.5;void main() AAA x=“Wang”,88.5; f(x); coutx.chtx.bendl;2. #include class BBB运行结果: int a,b; public: BBB( ) a=b=10;couta bendl; BBB(int aa,int bb) a=aa;b=bb; couta bendl; ;void main() BBB x,y(20,5);3. #includeclass base public: void show() coutclass base show() is called.n; ;class derived: public base public: void show() coutclass derived show() is called.n; 运行结果:;void main()base obj1; derived obj2; obj1.show(); obj2.show(); obj2.base:show();4#includeclass BB int a,b; public: BB(int i=0,int j=1) a=i; b=j; BB operator *(BB c)运行结果: BB d; d.a=a * c.a; d.b=b*c.b; return d; BB operator /(BB c) BB d; d.a=a /c.a; d.b=b/c.b; return d; void show() cout(a,b)endl;void main() BB x(10,20) , y(3,7),z; z=x*y; z.show(); z=x/y; z.show();5#includeclass Croot public: int small; Croot( ) small=2;cout”Called Constructor1.n”; Croot(int n) small=n; cout”Called Constructor2.n”; void showsmall() coutsmall=smallendl; ;class Cder1: public Croot public: Cder1(int m) :Croot(m);class Cder2: public Croot运行结果: public: int small; Cder2(int n=0) small=n; ;void main() Croot A; Cder1 bb(4); Cder2 cc; A.showsmall(); bb.showsmall(); cc.showsmall();四、程序填空题(每空2分,共14分)1一种类定义如下:class Goods private: char gd_name20; /商品名称 int weight; /商品重量 static int totalweight; /同类商品总重量 public:Goods (char*str,int w) /构造函数 strcpy(gd_name,str); weight=w; totalweight+=weight; Goods ()totalweight -= weight; Char * GetN()_ _; /返回商品名称 int GetW()return weight;_ int GetTotal_Weight() /定义静态成员函数返回总重量 _;2计算两点之间的距离。定义点类(Point),将两点之间距离函数声明为Point类的友元函数。#include#includeclass Pointpublic: Point( ) x=a; y=b; int xcord() return x; int ycord () return y; private: int x,y;friend double Distance(Point p1,Point p2);double Distance(Point p1,Point p2) double dx=_; double dy=_; return sqrt(dx*dx+dy*dy);void main() Point q1(1,2),q2(5,6);cout”The distance is: ” endl;五、编写程序(9分9分10分28分)1定义一个日期类Tdate,它有三个私有数据成员:Month,Day,Year和若干个成员函数,并实现如下要求:(1)用构造函数对数据成员赋值;(2)用成员函数对数据成员赋值;(3)定义一个友元函数打印日期。并要求对数据输入、输出。2有一圆环,其中小圆半径为10,大圆半径为20。编程定义一个circle类,含有私有变量半径r,能够初始化r、计算圆面积,再定义友元函数来计算出两个圆的面积的差。主函数中通过定义2个对象(大圆和小圆),求两个圆计算面积的差。3声明一个Shape基类,在此基础上派生出Rectangle(矩形)类和Circle(圆)类,二者都有GetArea()函数计算对象的面积。使用Rectangle类创建一个派生类Square(正方形)类。分别求三种图形的面积。(矩形和宽为10,20。圆的半径为3.5。正方形边长为10)面向对象程序设计9 试题答案及评分标准 (供参考)一单选题(每小题1.5分,共18分)DADBABDBADCC二、填空题(第1题第8题每空1分,第9题6分,共20分)9结果: B类成员访问权限ydisplay()zfun()privateprivateprivatepublic C类成员访问权限t fun()privatepublic1对象2类、对象3重载、虚函数4基类、派生类5运算符重载6私有、保护7.抽象、实例 8.变量 、 函数;三、写出下列程序运行结果(每题4分,共20分)4运行结果:(30,140)(3,2)5运行结果:Called Constructor1.Called Constructor2.Called Constructor1.small=2small=4small=21运行结果:Zhao70.52. 运行结果:10 1020 53. 运行结果:class base show() is called. class derived show() is called.class base show() is called. 四、程序填空题(每空2分,共14分)2int a=0, int b=0 p1.x-p2.x p1.y-p2.yDistance(q1,q2 )1 gd_namestatic return_ totalweight 五、编写程序(9分9分10分28分)1定义一个日期类Tdate,它有三个私有数据成员:Month,Day,Year和若干个成员函数,并实现如下要求:(1)用构造函数对数据成员赋值;(2)用成员函数对数据成员赋值;(3)定义一个友元函数打印日期。并要求对数据输入、输出。#includeusing namespace std;class Tdateint year,month,day;public:Tdate(int y=2008,int m=1,int d=1)year=y;month=m;day=d;void set_Tdate(int y=2000,int m=12,int d=30)year=y;month=m;day=d;void display()coutyear.month.dayendl;void main() Tdate obj1,obj2(2008,1,30); coutObj1: ; obj1.display(); coutObj2: ; obj2.display(); obj2.set_Tdate(2008,6,10); obj2.display();2有一圆环,其中小圆半径为3.5,大圆半径为8。编程定义一个circle类,含有私有变量半径r,能够初始化r、计算圆面积,再定义友元函数来计算出两个圆的面积的差。主函数中通过定义2个对象(大圆和小圆),求两个圆计算面积的差。#includeclass circle float r,s;public: circle(float r1=0) r=r1; float area() s=3.1416*r*r; return s; friend double subarea(circle &s1,circle &s2) return s1.area()-s2.area();void main()circle obj1(8); circle obj2(3.5); coutsubarea(obj1,obj2)endl;3声明一个Shape基类,在此基础上派生出Rectangle(矩形)类和Circle(圆)类,二者都有GetArea()函数计算对象的面积。使用Rectangle类创建一个派生类Square(正方形)类。分别求三种图形的面积。(矩形和宽为10,20。圆的半径为3.5。正方形边长为10)#include#define PI 3.1415926class shapeprotected: double s;public: void show() couts= sendl; ; class Rectangle:public shape double x,y; public: Rectangle(double x1=0,double y1=0) x=x1;y=y1; void GetArea() s=x*y; ; class Circle:public shape double r; public: Circle(double r1=0) r=r1; void GetArea() s=r*r*PI; ;class Square :public Rectangle double a; public: Square(double a1=0 ) a=a1; void GetArea() s=a*a; ;10
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!