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

下载本文档

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

文档简介

.上海应用技术学院20112012学年第一学期 面向对象程序设计 期(终)(B)试卷课程代码: B2042211 学分: 3 考试时间: 100 分钟课程序号: 1126045 1126046 1126047 1126048 班级: 学号: 姓名: 我已阅读了有关的考试规定和纪律要求,愿意在考试中遵守考场规则,如有违反将愿接受相应的处理。题 号一二三四五六七八九十总 分应得分303040100实得分 试卷共 页,请先查看试卷有无缺页,然后答题。一、选择题(每题2分,共30分)1. 关于类和对象不正确的说法是(C )A)类是一种类型,它封装了数据和操作B)对象是类的实例C)一个类的对象只有一个D)一个对象必属于某个类2.在类定义的外部,可以被访问的成员有( C )A) 所有类成员 B) private或protected的类成员C) public的类成员 D) public或private的类成员3.关于this指针的说法错误的是( A )A) this指针必须显示说明 B) 当创建一个对象后,this指针就指向该对象C) 成员函数拥有this指针 D) 静态成员函数不拥有this指针4.下面对构造函数的不正确描述是(B )A) 系统可以提供默认的构造函数 B) 构造函数可以有参数,所以可以有返回值C) 构造函数可以重载 D) 构造函数可以设置默认参数5.下面对析构函数的正确描述是(C )A) 系统不能提供默认的析构函数 B) 析构函数必须由用户定义C) 析构函数没有参数 D) 析构函数可以设置默认参数6.对静态成员的不正确描述是(C )A) 静态成员不属于对象,是类的共享成员B) 静态数据成员要在类外定义和初始化C) 调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针D) 非静态成员函数也可以操作静态数据成员7.下面选项中,不是类的成员函数为( C )A) 构造函数B) 析构函数C)友元函数 D) 缺省参数的构造函数方言8.下面对友元的错误描述是( D )A) 关键字friend用于声明友元B) 一个类的成员函数可以是另一个类的友元C) 友元函数访问对象的成员不受访问特性影响 D) 友元函数通过this指针访问对象成员9.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( A )A) public成员B) private成员C) protected成员D) 友元10.不论派生类以何种方法继承基类,都不能使用基类的(B )A) public成员B) private成员C) protected成员D) public成员和protected成员11.在创建派生类对象时,构造函数的执行顺序是( D )A)对象成员构造函数、基类构造函数、派生类本身的构造函数B)派生类本身的构造函数、基类构造函数、对象成员构造函数C)基类构造函数、派生类本身的构造函数、对象成员构造函数D)基类构造函数、对象成员构造函数、派生类本身的构造函数12.在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值(B )A) 不同 B) 相同C) 相容D) 部分相同13. 下面函数原型声明中,( B )声明了fun为纯虚函数A) void fun()=0; B) virtual void fun()=0; C) virtual void fun(); D) virtual void fun();14.假设A为抽象类,下列声明( B )是正确的A) A fun(int); B) A *p; C) int fun(A); D) A Obj;15.已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5,( C )是正确的。A. A1.p=5; B. A1-p=5;C. A1.*p=5; D. *A1.p=5;二、写出程序运行结果(每题 6分,共 30 分)1、写出下列程序的运行结果。#include using namespace std;class MyPoint public: MyPoint(int xx=5, int yy=5) X = xx; Y = yy; cout(X,Y); private: int X, Y; ;void main() MyPoint a(10,10),b;(10,10) (5,5)2、写出下列程序的运行结果。#includeusing namespace std;int i=0;void fun() static int i=1; couti+,;couti,;int main()fun();fun();return 0;1,0,2,03、写出下列程序的运行结果。#includeusing namespace std;class testprivate: int a;public: test()coutconstructorendl; test(int a)coutaendl; test()coutdestructorendl;int main() test A(3); return 0;3Destructor4写出下列程序的运行结果。#includeusing namespace std;class Sampleint n;public:Sample()Sample(int i)n=i;friend Sample operator-(Sample &,Sample &); friend Sample operator+(Sample &,Sample &);void disp()coutn=nendl;Sample operator -(Sample &s1,Sample &s2)int m=s1.n-s2.n;return Sample(m);Sample operator + (Sample &s1,Sample &s2)int m=s1.n+s2.n;return Sample(m);void main()Sample s1(10),s2(20),s3;s3=s2-s1;s3.disp();s3=s1+s2;s3.disp();n=10n=305、写出下列程序的运行结果。#includeusing namespace std;class Apublic:A(char *s)coutsendl;A();class B:public Apublic:B(char *s1,char *s2):A(s1)couts2endl;class C:public Apublic:C(char *s1,char *s2):A(s1)couts2endl;class D:public B,public Cpublic:D(char *s1,char *s2,char *s3,char *s4):B(s1,s2),C(s1,s3)couts4endl;void main()D d(class A,class B,class C,class D);四、编程题(共40分,每小题10分)1. 将字符串“ABCD1234efgh”前后对调显示。#include #include void main()char a = ABCD1234efgh;char * p;char * q;char * t;int i;for (i = 0; i strlen(a) / 2; i+)p = &ai;q = &a11 - i;*t = *p;*p = *q;*q = *t;printf (调换后的字符串为:%sn, a);getch();2. 编写三个重载函数,返回一个整数、实数和双精度数的三倍。3. 声明一个基类Base,有两个公有成员函数fn1( ),fn2( ),私有派生出Derived类,要求main函数通过Derived类的对象调用基类的函数fn1( ),fn2()#includeclassBaseClasspublic:voidfn1();voidfn2();voidBaseClass:fn1()cout调用基类的函数fn1()endl;voidBaseClass:fn2()cout调用基类的函数fn2()endl;classDerivedClass:publicBaseClasspublic:voidfn1();voidfn2();voidDerivedClass:fn1()cout调用派生类的函数fn1()endl;voidDerivedClass:fn2()cout调用派生类的函数fn2()fn1();pBaseClass-fn2();pDerivedClass-fn1();pDerivedClass-fn2();4. 下列shape类是一个表示形状的抽象类,area()为求图形面积的函数,total()则是一个通用的用以求形状的图形面积总和的函数。请从shape类派生三角形类(triangle)、矩形类(rectangle),并给出具体的求面积函数#include#includeusing namespace std;class Rectangle:public Shape float x1,x2,y1,y2;public: Rectangle(float argx1=0,float argy1=0,float argx2=0,float argy2=0); float getArea();Rectangle:Rectangle(float argx1,float argy1,float argx2,float argy2) x1=argx1;y1=argy1;x2=argx2;y2=argy2;float Rectangle:getArea() float length,width; length=x1x2 ? x1-x2 : x2-x1; width=y1y2 ? y1-y2 : y2-y1; return length*width;class Triangle:public Shape float x1,x2,y1,y2,x3,y3;public: Triangle(float argx1=0,float argy1=0,float argx2=0,float argy2=0,float argx3=0,float argy3=0); float getArea();Triangle:Triangle(float argx1,float argy1,float argx2,float argy2,float argx3,float argy3) x1=argx1;y1=argy1;x2=argx2;y2=argy2;x3=argx3;y3

温馨提示

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

最新文档

评论

0/150

提交评论