面向对象程序设计C++期末考试试题_第1页
面向对象程序设计C++期末考试试题_第2页
面向对象程序设计C++期末考试试题_第3页
面向对象程序设计C++期末考试试题_第4页
面向对象程序设计C++期末考试试题_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

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 构造函数可以设置默认值 D

2、 构造函数必须指定类型说明。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=A:f1 C p=A:f1

3、() 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 D *A1.p=5 12、

4、已知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 私有继承的公有成员15、 下列对派生

5、类的描述中,( )是错的。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 提高运行效率 D 减少目标代码18、 带

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

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

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

9、复用。 三、分析程序的执行结果题分析程序的执行结果,将结果按程序运行时输出形式填在答题纸对应的题号后 (本题共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 p(5, 7), q; q

10、.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+)(*(*(pm+i)+j)

11、.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=new B3;p0=B(

12、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 Show() coutx,yen

13、dl;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(i)b1=j;coutco

14、n. 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(i,j), B2(i,k

15、), 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: Product(cha

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

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

18、,共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 Ma5.con. Acon

19、. 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; /显示剩余产品数量;并用数据进行测试。(10分) #in

20、clude #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-=n; r=money%

21、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.sedgeendl;void main() rectangle A(3.5,2.5),B(4.2,3.8),C; C.addarea(A,B);4. 编一个程序计算正方体,球体和圆柱体的表面积和体积。要求:抽象出一个公共基类container为抽象类,在其中定义求表面积和体积的纯虚函数。抽象类中定义一个公共的数

温馨提示

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

评论

0/150

提交评论