面向对象程序设计C++期末考试试题(共14页).doc

上传人:飞****2 文档编号:14132092 上传时间:2022-05-03 格式:DOC 页数:14 大小:40.50KB
返回 下载 相关 举报
面向对象程序设计C++期末考试试题(共14页).doc_第1页
第1页 / 共14页
面向对象程序设计C++期末考试试题(共14页).doc_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《面向对象程序设计C++期末考试试题(共14页).doc》由会员分享,可在线阅读,更多相关《面向对象程序设计C++期末考试试题(共14页).doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上一、单项选择题下面每题的选项中,只有一个是正确的,请选择正确的答案填入答题纸中对应的题号后 (本题共25小题,每小题1分,共25分)。1、当一个函数无返回值时,函数的类型应定义为( )。 A void B 任意 C int D无2、作用域运算符的功能是( )。:A 标识作用域的级别 B 指出作用域的范围C 给定作用域的大小 D 标识某个成员是属于哪个类3、下列的( )是引用调用。A 形参是指针,实参是地址值 B 形参和实参都是变量C 形参是数组名,实参是数组名 D 形参是引用,实参是变量4、( )不是构造函数的特征A 构造函数的名和类名相同 B 构造函数可以重载。C

2、构造函数可以设置默认值 D 构造函数必须指定类型说明。5、下列( )不能作为类的成员。A 自身类对象的指针 B 自身类对象的引用C 自身类对象 D 另一个类的对象6、重载函数在调用时选择的依据,( )是错误的。A. 参数个数 B 参数的类型C A或者B D 函数的类型7、下列静态成员的特性中,( )是错误的。A 说明静态成员时,要加修饰符staticB 静态数据成员要在类体外进行初始化C 引用静态数据成员时,要在静态数据成员名前加及作用域运算符D 静态数据成员不是所有对象所共用的8、已知f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用( )是正确的。A p=f1B p=

3、A:f1 C p=A:f1() D p=f1()9、运算符-*的功能是( )。A a p=&a public int i. int p2=&ip-*p2 p-*p2 a.iA 用来表示指向对象指针对指向类成员指针的操作B 用来表示对象对指向类成员指针的操作C 用来表示指向对象指针对类成员的操作D 用来表示对象类成员的操作10、下列定义中,( )是定义指向数组的指针p.A int p5 B int (*p)5 C (int*)p5 D int *p 11、设p为一个指向类A数据成员m的指针,A1为A的一个对象。如果给m赋值5,( )为正确的。A A1.p=5B A1-p=5 C A1.*p=5

4、D *A1.p=5 12、已知print( ) 函数是一个类的常成员函数,它无返回值。下列表示中,( )是正确的。 A void print ( ) const B const void print ( ) C void const print ( ) D void print (const)13、说明const char * ptr; 中,ptr应该是( )。 A 指向字符常量的指针 B 指向字符的常量指针C 指向字符串常量的指针 D 指向字符串的常量指针14、派生类的对象对它的基类成员中( )是可以访问的。A 公有继承的公有成员 B 公有继承的私有成员C 公有继承的保护成员 D 私有继承的

5、公有成员15、 下列对派生类的描述中,( )是错的。A 一个派生类可以作为另一个派生类的基类B 派生类至少有一个基类C 派生类的成员除了它自己的成员以外,还包含了它的基类成员D 派生类中继承的基类成员的访问权限到派生类保持不变16、对于 int * pa5; 的描述,( )是正确的。A pa是一个指向数组的指针,所指向的数组是5个int型元素。B pa是一个指向某数组中第5个元素的指针,该元素是int型变量。C pa5表示某个数组的第5个元素的值。D pa是一个具有5个元素的指针数组,每个元素是一个int型指针。17、 设置虚基类的目的是( )。A 简化程序 B 消除二义性 C 提高运行效率

6、D 减少目标代码18、 带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚函数的子对象初始化( )。A 与虚基类下的派生类个数有关 B 多次 C 二次 D 一次19、 下列函数中,( )不能重载。A 成员函数 B 非成员函数 C 析构函数 D 构造函数20、 关于动态联编的描述中,( )是错误的。A 动态联编是以虚函数为基础的B 动态联编是在运行时,确定所调用的函数代码的。C 动态联编调用函数操作是指向对象的指针或对象引用。D 动态联编是在编译时确定操作函数的。21、关于虚函数的描述中,( )是正确的。A 虚函数是一个非satatic类的成员函数。B 虚函数是

7、一个非成员函数。C 基类中说明了虚函数后,派生类中与其对应的函数可以不必说明为虚函数。D 派生类的虚函数与基类的虚函数具有不同的参数个数和类型。22、关于纯虚函数和抽象类的描述中,( )是错误的。A 纯虚函数是一种特殊的虚函数,它没有具体的实现。B 抽象类是指含有纯虚函数的类。C 一个基类中说明了纯虚函数,则其派生类不再是抽象类。D 抽象类一般只能作为基类来使用。23、下列关于抽象类的使用中,( )是错误的。A 可以定义抽象类的对象 B 可以定义抽象类的指针C 可以定义抽象类的引用 D 可以定义抽象类的派生类24、派生类的构造函数的成员初始化列表中,不能包含( )。A 基类的构造函数B 派生类

8、中子对象的初始化C 基类的子对象的初始化D 派生类中一般数据成员的初始化25、关于new运算符的下列描述中,( )是错的。A 它可以用来动态创建对象和对象数组; B 使用它创建的对象或对象数组可以使用delete运算符删除; C 使用它创建对象时要调用构造函数; D 使用它创建对象数组时,必须指定初始值。 二、填空题将正确的答案填入答题纸相应的题号后。(本题共 3小题,5个空,每空2分,共10分)1. 面向对象的程序设计有三大特征,它们是封装、 (1 )继承 、 (2 )多态 。2、类是用户定义的类型,具有类类型的变量称作 (3)对象 。3、在面向对象的程序设计中,通过 (4)封装实现数据隐藏

9、;通过(5)继承实现代码的复用。 三、分析程序的执行结果题分析程序的执行结果,将结果按程序运行时输出形式填在答题纸对应的题号后 (本题共5小题,每题4分,共20分)。1、 #include class M public: M() x=y=0; M(int i, int j) x=i; y=j; void copy(M *m); void setxy(int i, int j) x=i; y=j; void print() coutx,yx; y=m-y;void fun(M m1, M *m2) m1.setxy(12, 15); m2-setxy(22,25); void main() M

10、p(5, 7), q; q.copy(&p); fun(p, &q); p.print(); q.print(); 2、#include class Mpublic:M()a=b=0; M(int i,int j)a=i;b=j;void print() couta,bt;private:int a,b;void main() M m24; int x=10,y=10; for(int i=0;i2;i+) for(int j=0;j4;j+) mij=M(x+=2,y+=10); M (*pm)4(m); for(i=0;i2;i+) coutendl; for(int j=0;j4;j+)

11、(*(*(pm+i)+j).print();/用指针的方式存取数组的第ij个元素 coutendl;3、#include #include class B public:B(char *s, double n)strcpy(name,s);b=n;coutConstructor. n;B()coutDefaultn;B()coutDestructor nameendl;void getb(char *s, double& n) strcpy(s,name); n=b;private:char name80;double b;void main()B* p;double n;char s80;p

12、=new B3;p0=B(Ma,4.8);p1=B(Wang,3.6);p2=B(Li,3.1);for(int i=0;i3;i+) pi.getb(s,n); couts,nendl;delete p;4、#include class Apublic:A(int i,int j) a=i;b=j;void Move(int x,int y) a+=x;b+=y;void Show() cout(a,b)endl;private:int a,b;class B:public Apublic:B(int i,int j,int k,int l):A(i,j),x(k),y(l)void Sho

13、w() coutx,yendl;void fun() Move(3,5);void f1() A:Show();private:int x,y;void main()A e(1,2);e.Show();B d(3,4,5,6);d.A:Show();d.B:Show();d.f1();5、#include class A public:A(int i)a=i;coutcon. An;void print()coutaendl;A()coutdes. An;private:int a;class B1 : virtual public A public:B1(int i, int j) : A(

14、i)b1=j;coutcon. B1n;void print()A:print(); coutb1endl;B1()coutdes. B1n;private:int b1;class B2 : virtual public A public:B2(int i, int j) : A(i)b2=j;coutcon. B2n;void print()A:print(); coutb2endl;B2()coutdes. B2n;private:int b2;class C : public B1, public B2 public:C(int i, int j, int k, int l) : B1

15、(i,j), B2(i,k), A(i) c=l; coutcon. Cendl; void print() B1:print(); B2:print();coutcendl; C()coutdes. Cendl;private:int c;void main()C c1(5,7,3,6);c1.print();四、程序设计题将编写的程序标上小题题号,写在答题纸上。本题共4小题, 45分。1编写一个程序,设计一个产品类Product,其定义如下: Class Product char *name; /产品名称int price; /产品单价int quantity; /剩余产品数量public

16、: Product(char *n,int p,int q); /构造函数 Product(); /析构函数 void buy(int money); /购买产品 void get() const; /显示剩余产品数量;并用数据进行测试。(10分)2.以面向对象的方法设计一个类,此类包含3个私有数据:unlead,lead(无铅汽油和有铅汽油)以及total(当天总收入,无铅汽油的价格是17元/公升,有铅汽油的价格是16元/公升),请以构造函数方式建立此值。试输入某天所加的汽油量,本程序将列出加油站当天的总收入。(10分)3.编写一个程序计算两个给定长方形的面积,其中在设计类成员函数addar

17、ea()(用于计算两个长方形的总面积)时使用对象作为参数。(12分)4.编一个程序计算正方体,球体和圆柱体的表面积和体积。要求:抽象出一个公共基类container为抽象类,在其中定义求表面积和体积的纯虚函数。抽象类中定义一个公共的数据成员radius,此数值可以作为球体的半径、正方体的边长、圆柱体底面圆半径。由该抽象类派生出的三个类,都有求表面积和体积的实际定义。键盘输入radius的值后,可以输出这3种立方体的面积。(13分)8 一、选择题(25小题,共25分) 1A6D11C16D21C2D7D12A17B22C3D8B13C18D23A4D9A14A19C24C5C10B15D20D2

18、5D二、填空题( 每空2分,共10分)1继承2多态3对象4封装5继承三、 分析程序的执行结果,填空 (5小题,每小题4分,共20分)15,722,252. 12,20 14,30 16,40 18,50 20, 60 22,70 24,80 26,903. Default Default Default Constructor. Destructor Ma Constructor. Destructor WangConstructor. Destructor Li Ma, 4.8 Wang, 3.6 Li, 3.1 Destructor LiDestructor WangDestructor

19、Ma5.con. Acon. B1con. B2con. C57536des. Cdes. B2des. B1des. A四.程序设计题 (4小题,共45分)1. 编写一个程序,设计一个产品类Product,其定义如下: class Product char *name; /产品名称int price; /产品单价int quantity; /剩余产品数量public: Product(char *n,int p,int q); /构造函数 Product(); /析构函数 void buy(int money); /购买产品 void get() const; /显示剩余产品数量;并用数据进

20、行测试。(10分) #include #include class Product char *name; int price; int quantity;public: Product(char *n,int p,int q) name =new charstrlen(n)+1; strcpy(name,n);price=p;quantity=q;Product() if(name) delete name; name=0;void buy(int money) int n,r; n=money/price; if(nquantity) cout数量不够endl; else quantity

21、-=n; r=money%price; cout产品:name单价:price元 顾客; coutmoney元,买了n台,剩余r元endl;void get() const cout产品:name单价:price元 剩余quantity台endl;void main() Product p1(电视机,2000,15); p1.buy(7000); p1.get(); p1.buy(4500); p1.get();2. 以面向对象的方法设计一个类,此类包含3个私有数据:unlead,lead(无铅汽油和有铅汽油)以及total(当天总收入,无铅汽油的价格是17元/公升,有铅汽油的价格是16元/公

22、升),请以构造函数方式建立此值。试输入某天所加的汽油量,本程序将列出加油站当天的总收入。 (10分)#include class Tc private:double unlead,lead,total;int unprice,price; public:Tc()unprice=17;price=16;void getdata() coutunlead; coutlead; total=unprice*unlead+price*lead;void disp() cout总收入:totalendl;void main() Tc A; A.getdata(); A.disp();3. 编写一个程序计

23、算两个给定长方形的面积,其中在设计类成员函数addarea()(用于计算两个长方形的总面积)时使用对象作为参数。(12分)#include #include class rectangle private:float ledge,sedge; public:rectangle();rectangle(float a,float b) ledge=a;sedge=b;float area() return ledge*sedge;void addarea(rectangle r1,rectangle r2) cout总面积:r1.ledge*r1.sedge+ r2.ledge*r2.sedge

24、endl;void main() rectangle A(3.5,2.5),B(4.2,3.8),C; C.addarea(A,B);4. 编一个程序计算正方体,球体和圆柱体的表面积和体积。要求:抽象出一个公共基类container为抽象类,在其中定义求表面积和体积的纯虚函数。抽象类中定义一个公共的数据成员radius,此数值可以作为球体的半径、正方体的边长、圆柱体底面圆半径。由该抽象类派生出的三个类,都有求表面积和体积的实际定义。键盘输入radius的值后,可以输出这3种立方体的面积。(13分)#include class Circlepublic:Circle(double i) r=i;

25、double Area(double r) a=r*r*3.14159; return a;void Show() coutarea=Area(r)endl;private:double r,a;class Rectanglepublic:Rectangle(double i,double j) l=i;w=j; double Area(double i,double j) a=i*j; return a;void Show() coutarea=Area(l,w)endl;private:double l,w,a; ;class Graph:public Circle, public Rec

26、tanglepublic:Graph(double i, double j, double k):Circle(i),Rectangle(j,k)r=i;l=j;w=k;double Area(double r,double l,double h) a=Circle:Area(r)+Rectangle:Area(l,h); return a;void Show() coutarea=Area(r,l,w)endl;private: double r,l,w,a;void main()Circle c(10);c.Show();Rectangle rec(20,50);rec.Show();Graph g(10.0,20.0,50.0);g.Show( );专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁