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

下载本文档

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

文档简介

1、山东师范高校2022-2022学年第一学期期末考试试题 一、单项选择题 下面每题的选项中,只有一个是正确的,请选择正确的答案填入答题纸中对应的题号后(本 题共25小题,每题1分,共25分)。1、当一个函数无返回值时,函数的类型应定义为( )oA void B 任意 C int D 无)o指出作用域的范围标识某个成员是属于哪个类B形参和实参都是变量D形参是引用,实参是变量)o指出作用域的范围标识某个成员是属于哪个类B形参和实参都是变量D形参是引用,实参是变量2、作用域运算符的功能是(A标识作用域的级别 B C给定作用域的大小 D 3、以下的()是引用调用。B构造函数可以重载。D构造函数必需指定类

2、型说明。)不能作为类的成员。A形参是指针,实参是地址值 C形参是数组名,实参是数组名 4、()不是构造函数的特征 A构造函数的名和类名相同 C构造函数可以设置默认值 5、以下(A自身类对象的指针B自身类对象的引用C自身类对象D另一个类的对象6、重载函数在调用时选择的依据,()是错误的。A.参数个数B参数的类型C A或者BD函数的类型7、以下静态成员的特性中,()是错误的。A 说明静态成员时,要加修饰符staticB静态数据成员要在类体外进行初始化C引用静态数据成员时,要在静态数据成员名前加类名及作用域运算符D静态数据成员不是全部对象所共用的8、fl(int)是类A的公有成员函数,p是指向成员函

3、数fl()的指针,采纳()是正确的。A p=fl B p=A:fl C p=A:fl() D p=f 1 ()9、运算符-*的功能是( )oA用来表示指向对象指针对指向类成员指针的操作B用来表示对象对指向类成员指针的操作C用来表示指向对象指针对类成员的操作D用来表示对象类成员的操作10、以下定义中,()是定义指向数组的指针p.A int p5 B int (*p)5 C (int*)p5 D int *p11、设p为一个指向类A数据成员m的指针,Al为A的一个对象。假如给m赋值5,() 为正确的。A ALp=5 B Al,p=5 C AL*p=5 D *ALp=512、print。函数是一个类

4、的常成员函数,它无返回值。以下表示中,()是正确的。A void print () const B const void print ()C void const print () D void print (const)13、说明 const char * ptr;中,ptr 应当是()。A指向字符常量的指针B指向字符的常量指针Product p 1(“ 电视机”,200015);pl.buy(7000);pl.get();pl.buy(4500);pl.get();).以面对对象的方法设计一个类,此类包含3个私有数据:unlead, lead (无铅汽油和有铅 汽油)以及total (当天

5、总收入,无铅汽油的价格是17元/公升,有铅汽油的价格是16元/公 升),请以构造函数方式建立此值。试输入某天所加的汽油量,本程序将列出加油站当天的 总收入。(10分)#include class Tc(private:double unlead,lead,total;int unprice,price;public:Tc() unpriced 17 ;price= 16;void getdata()(coutvv”无铅汽油总量;”;cinunlead;COUtVV”有铅汽油总量;”;cinlead;total二unprice*unlead+price*lead;)void disp()(cou

6、tvv”总收入:ntotalendl;);void main()Tc A;A.getdata();A.dispO;.编写一个程序计算两个给定长方形的面积,其中在设计类成员函数addarea。(用于计算 两个长方形的总面积)时使用对象作为参数。(12分)#include #include class rectangle(private:float ledge,sedge;public:rectangle();rectangle(float a,float b)(ledge=a;sedge=b;);float area()(return ledgesedge;);void addarea(rect

7、angle rl,rectangle r2)(cout”,总面积:nrl.ledger 1 .sedge+ r2ledge*r2.sedgeendl;);void main()(rectangle A(3.5,2.5),B(4.2,3.8),C;C.addarea(A,B);.编一个程序计算正方体,球体和圆柱体的外表积和体积。要求:抽象出一个公共基类 container为抽象类,在其中定义求外表积和体积的纯虚函数。抽象类中定义一个公共的数据 成员radius,此数值可以作为球体的半径、正方体的边长、圆柱体底面圆半径。由该抽象类派 生出的三个类,都有求外表积和体积的实际定义。键盘输入radius

8、的值后,可以输出这3 种立方体的面积。(13分)#include class Circle(public:Circle(double i) r=i;double Area(double r) a=r*r*3.14159; return a;void Show() coutHarea=HArea(r)endl;private:double r,a;);class Rectangle public:Rectangle(double i,double j) l=i;w=j;double Area(double i,double j) a=i*j; return a;void Show() coutH

9、area=,Area(l,w)endl; private:double l,w,a;;class Graph:public Circle, public Rectanglepublic:Graph(double i, double j, double k):Circle(i),Rectangle(j,k) r=i;l=j;w=k;double Area(double r,double 1,double h) a=Circle:Area(r)+Rectangle:Area(l,h); return a; void Show() coutarea=nArea(r,l,w)endl;private:

10、double r,l,w,a;);void main() (Circle c(10);c.ShowQ;Rectangle rec(20,50);rec.ShowQ;Graph g(10.0,20.0,50.0);g.Show();C指向字符串常量的指针 D指向字符串的常量指针14、派生类的对象对它的基类成员中()是可以访问的。A公有继承的公有成员B公有继承的私有成员C公有继承的保护成员D私有继承的公有成员15、以下对派生类的描述中,()是错的。A 一个派生类可以作为另一个派生类的基类B派生类至少有一个基类C 派生类的成员除了它自己的成员以外,还包含了它的基类成员D派生类中继承的基类成员的访问权

11、限到派生类保持不变16、对于int*pa5;的描述,()是正确的。A pa是一个指向数组的指针,所指向的数组是5个int型元素。B pa是一个指向某数组中第5个元素的指针,该元素是血型变量。C pa5表示某个数组的第5个元素的值。D pa是一个具有5个元素的指针数组,每个元素是一个血型指针。17、设置虚基类的目的是()oA简化程序 B消退二义性C提高运行效率D削减目标代码18、带有虚基类的多层派生类构造函数的成员初始化列表中都耍列出虚基类的构造函数, 这样将对虚函数的子对象初始化()oA与虚基类下的派生类个数有关 B屡次C二次 D 一次19、以下函数中,()不能重载。A成员函数 B非成员函数C

12、析构函数 D构造函数20、关于动态联编的描述中,()是错误的。A动态联编是以虚函数为基础的B动态联编是在运行时,确定所调用的函数代码的。C动态联编调用函数操作是指向对象的指针或对象引用。D动态联编是在编译时确定操作函数的。21、关于虚函数的描述中,()是正确的。A虚函数是一个非satatic类的成员函数。B虚函数是一个非成员函数。C基类中说明白虚函数后,派生类中与其对应的函数可以不必说明为虚函数。D 派生类的虚函数与基类的虚函数具有不同的参数个数和类型。22、关于纯虚函数和抽象类的描述中,()是错误的。A 纯虚函数是一种特别的虚函数,它没有详细的实现。B抽象类是指含有纯虚函数的类。C 一个基类

13、中说明白纯虚函数,那么其派生类不再是抽象类。D抽象类一般只能作为基类来使用。23、以下关于抽象类的使用中,()是错误的。A可以定义抽象类的对象 B可以定义抽象类的指针C可以定义抽象类的引用 D可以定义抽象类的派生类24、派生类的构造函数的成员初始化列表中,不能包含()0A基类的构造函数B派生类中子对象的初始化C基类的子对象的初始化D派生类中一般数据成员的初始化25、关于new运算符的以下描述中,()是错的。A 它可以用来动态创立对象和对象数组;B使用它创立的对象或对象数组可以使用delete运算符删除;C使用它创立对象时要调用构造函数;D使用它创立对象数组时,必需指定初始值。二、填空题将正确的

14、答案填入答题纸相应的题号后。(此题共3小题,5个空,每空2分,共10分).面对对象的程序设计有三大特征,它们是封装、(1)、(2) o2、类是用户定义的类型,具有类类型的变量称作(3) o3、在面对对象的程序设计中,通过(4)实现数据隐蔽;通过(5)实现代码的复用。三、分析程序的执行结果题分析程序的执行结果,将结果按程序运行时输出形式填在答题纸对应的题号后(此题共5小 题,每题4分,共20分)。 #include class M public:M() x=y=0; M(int i, int j) x=i; y寸void copy(M *m);void setxy(int i, int j) x

15、=i; y=j; void print() coutxn,yendl; private:int x, y;void M:copy(M *m) x=m-x; y=m-y;void fun(M ml, M *m2) ml.setxy(12, 15);m2-setxy(22,25);)void main() M 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() coutaH,nbntn;private:in

16、t a,b;);void main() M m24; int x=10,y=10;for(int i=0;iv2;i+) for(int j=0;j4;j+) mi皿=M(x+=2,y+=10);)M (*pm)4(m);for(i=0;i2;i+) coutendl;for(int j=0;j4;j+)(*(*(pm+i)+j).print();用指针的方式存取数组的第ij个元素 coutendl;)3、#include #include class B public:B(char *s, double n) strcpy(name,s);b=n;coutHConstructor. nn;)

17、B()coutnDefaultnn;-B () cout Destructor nnameendl;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(nMan,4.8);pl=BCWang”,3.6);p2=BCLi;3.1);for(int i=0;i3;i+) pi.getb(s,n);coutsnnendl;delete p;)4、#include class A (public

18、:A(int i,int j) a=i;b=j;void Move(int x,int y) a+=x;b+=y;void Show() coutH(na,V,b,)Hendl; private:int a,b;);class B:public A ( public:B(int i,int j,int k,int l):A(i,j),x(k),y(l) ()void Show() coutxn,nyendl;void fun() Move(3,5);void fl() A:Show(); private:int x,y;); void main() Ae(l,2);e.ShowQ;B d(3,

19、4,5,6);d.A:Show();d.B:Show();d.fl();)5、#include class A public:A(int i) a=i;coutncon. An”;void print() coutaendl;A()cout”des. An”; private:int a;);class B1 : virtual public A public:Bl(int i, int j) : A(i)b 1 =j;coutncon. BlnH;void print() A:print(); coutblendl;-Bl()coutHdes. Blnn; private:int bl;cl

20、ass B2 : virtual public A public:B2(int i, int j): A(i)b2=j;coutHcon. B2n”; void print() A:print(); coutb2endl;B2()cout”des. B2nH;private:int b2;class C : public Bl, public B2 public:C(int i, intj, int k, int 1): Bl(i,j), B2(i,k), A(i) c=l; cout*con. Cnendl; void print() Bl:print(); B2:print();coutc

21、endl; C()coutvdes. Cnendl;private:int c;);void main()Ccl(5,7,3,6);cl.print();)四、程序设计题将编写的程序标上小题题号,写在答题纸上。此题共4小题,45分。.编写一个程序,设计一个产品类Product,其定义如下:Class Product (产品单价/剩余产品数量产品单价/剩余产品数量char *name; 产品名称int price;int quantity;public:Product(char *n,int p,int q);Product。; void buy(int money);void get() co

22、nst;构造函数析构函数购买产品显示剩余产品数量;并用数据进行测试。(10分).以面对对象的方法设计一个类,此类包含3个私有数据:unlead, lead (无铅汽油和有铅汽油)以及total (当天总收入,无铅汽油的价格是17元/公升,有铅汽油的价格是16元/ 公升),请以构造函数方式建立此值。试输入某天所加的汽油量,本程序将列出加油站当天 的总收入。(10分).编写一个程序计算两个给定长方形的面积,其中在设计类成员函数addarea()(用于计算 两个长方形的总面积)时使用对象作为参数。(12分).编一个程序计算正方体,球体和圆柱体的外表积和体积。要求:抽象出一个公共基类 containe

23、r为抽象类,在其中定义求外表积和体积的纯虚函数。抽象类中定义一个公共的数据 成员radius,此数值可以作为球体的半径、正方体的边长、圆柱体底面圆半径。由该抽象类派 生出的三个类,都有求外表积和体积的实际定义。键盘输入radius的值后,可以输出这3 种立方体的面积。(13分)8山东师范高校信息科学与工程2022-2022学年第一学期选择题(25小题,共25分)12345ADDDC678910DDBAB1112131415C A CAD1617181920DBDCD2122232425CCACD二、 填空题(每空2分,共10分)继承多态对象封装继承 三、分析程序的执行结果,填空(5小题,每题4分,共20分)5,722,2512,20 14,30 16,40 18,5020,60 22,70 24,80 26,90DefaultDefaultDefaultConstructor.Destructor MaConstructor.Destructor WangConstructor.Destructor LiMa, 4.8Wan

温馨提示

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

评论

0/150

提交评论