1、班级: 姓名: 学号: OOOOO装O订O线OOOOO 绍兴文理学院 2011 学年 01学期 信计 专业 09 级面向对象程序设计试卷(答题卷) (A) 题 号(型)一二三四五核分人得 分总分评卷人(考试形式:闭卷 ) 一、选择题 (共15分,每小题1分) 1. 下面的函数声明中, 哪一个是” void BC(int a, int b);”的重载函数? ( )A、int BC(int a, int b)B、void BC(int a, char b) C、float BC(int a, int b, int c = 0) D、void BC(int a, int b=0)2.C+源程序文件的
2、缺省扩展名为( )A、cpp B、exe C、obj D、lik3.假定AA为一个类,a为该类的公有数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为( )A、px(a) B、pxa C、px.a D、px-a4.类中定义的数据成员默认为( )访问属性A、private B、public C、protected D、friend5.假定AB为一个类,执行“AB R1=R2;”语句时,将自动调用该类的( )A、无参构造函数 B、带参构造函数 C、赋值重载函数 D、拷贝构造函数6.引入友元的主要目的是为了( )A、增强数据的安全性 B、提高程序的可靠性C、提高程序的效率
3、和灵活性 D、保证类的封装性7. 下列关于构造函数的描述中,错误的是() A、 构造函数可以设置默认参数;B、 构造函数在定义类对象时自动执行C、 构造函数可以是内联函数;D、 构造函数不可以重载8. 派生类的对象对它的基类成员中()是可访问的 A、公有继承的公有成员B、公有继承的私有成员 C、公有继承的保护成员D、私有继承的公有成员9.关于插入运算符的重载,下列说法错误的是( ) A、其返回值类型是ostream & B、此运算符重载必须为类的成员函数 C、运算符的第一个参数类型是ostream & D、运算符函数有两个参数10.下列虚基类的声明中正确的是( )A、class virtual
4、 B:public A B、class B:virtual public A C、class B:public A virtual D、class B:public virtual A 11.下列语句中错误的是( )A、int *p=new int(100); B、int *p=new int100; C、int *p=new int; D、int *p=new int40(0);12. 不能作为函数重载判断依据的是:( )A、参数个数 B、参数类型 C、函数名字 D、返回类型13. 对于类定义 class A public: virtual void func1( ) void func2(
5、 ) ; class B:public A public: void func1( )coutclass B func 1end1; virtual void func2( )coutclass B func 2end1; ; 下面正确的叙述是( ) A、A:func2( )和B:func1( )都是虚函数 B、A:func2( )和B:func1( )都不是虚函数 C、B:func1( )是虚函数,而A:func2( )不是虚函数 D、B:func1( )不是虚函数,而A:func2( )是虚函数14. 要让一个类中的所有对象具有共同的数据,可以使用_。A、常数成员变量 B、私有数据成员 C
6、静态数据成员 D、 以上都是15. 下面函数模板定义中不正确的是( ) A、template B、template QF(Q x) QF(Q x) return Q+x; return x+x; C、template D、template TF(T x) TF(T x) return x*x; return x1; 二、填空题 (共20分,每小题2分)1.无论是什么继承方式,派生类的成员不能访问基类_属性的成员2. C+支持的两种多态性分别是_多态性和_多态性3. 含有纯虚函数的类为_,为克服多重继承的二义性,用_声明的基类称为虚基类4.当建立一个新对象时,程序自动调用_函数5.C+标准库中
7、的异常层次的根类为_类,MFC类库中绝大多数类都来源自根类_6.面向程序设计的特性为:抽象性、_、_、多态性三、程序阅读题(共30分)1. (5分)写出下列程序运行后的结果class testprivate:int num;public:test();test();test:test()num=0;test:test()cout”deructor is active”endl;void main() test x3;cout”exiting main”endl;2. (5分)写出下列程序运行的结果 #include using namespace std;class BASE OOOOO线O订
8、O装OOOOO char c; public: BASE(char n):c(n) virtual BASE()coutc; ; class DERIVED:public BASE char c; public: DERIVED(char n):BASE(n+1),c(n) DERIVED()coutc; ; int main(void) DERIVED(X); return 0; 3. (6分)当输入0和!时,给出下列程序运行的结果#include using namespace std;void mian()int i;char ch;coutich;if(i=0) throw 0;if(
9、ch=!)throw !;cath (int )cout”输入为 0n”;catch(char)cout”输入为 !”endl;cout“程序结束“endl;4. (6分) #include class A班级: 姓名: 学号: OOOOO装O订O线OOOOO public: A()cout”constructor class A”;class B public: B()cout”constructor class B”;Class C public: C()cout”constructor class C”;Class D public: D()cout”constructor class
10、D”; Class E:public A,virtual public B,public C D d;E()cout”constructor class E”;void main() E e; 5. (8分) 写出下列程序运行的结果#include class FATHER public: virtual void answer( ) coutI am fathern; return; class DAUGHTER:public FATHER public: virtual void answer( ) coutI am daughtern; return; class SON:public
11、FATHER public: void answer() coutanswer(); who=&daughter; who-answer(); who=&son; who-answer(); return 0; 四、程序填空题(共21分,每空3分)1class A int * a; public: A(int aa=0) _(1)_/用aa初始化a所指向的动态对象 A()_delete a_;/释放动态存储空间;2. #includeusing namespace std;class myclassint x,y;public:myclass(int vx,int vy);_(2)_ _(3)
12、myclass:myclass(int vx,int vy)x=vx;y=vy;int sum(myclass c1)return c1.x+c1.y;void print(myclass c1)coutx=c1.xy=c1.yendl;void main()myclass c(120,23);coutthe sum issum(c)endl;print(c);3. #include using namespace std;class APrivate:char name80;public:A( _(4)_ ) _(5)_ OOOOO线O订O装OOOOO;class B_(6)_publi
13、c:B(const char*n)_(7)_void PrintName( ) cout”name:”nameendl;void main( )B b1(“Ling Li”);b1.PrintName( ) ; /执行结果:name: Ling Li五、程序设计题(共14分)1.定义一个抽象类SHAPE,在此基础上派生出RECTANGLE类和CIRCILE类,二者都由getarea()函数计算对象的面积,getperim()函数计算对象的周长。(对象的数据通过构造函数初始化)4绍兴文理学院 2011 学年 01学期 信计 专业 09 级面向对象程序设计)期末试卷(A) 参考答案及评分标准一、选
14、择(共15 分,每小题 1分)BADAD CDABB DDCCA二、填空(共 20 分,每空 2 分)1.私有 2 动态, 静态 3.抽象类, virtual 4. 构造 5.exception,CObject6.封装性,封闭性三、程序阅读 (共30分)1. exiting maindeructor is activedeructor is activedeructor is active (5分)2.XY (5分) 3. 输入为 0程序结束 (6分)4. constructor class Bconstructor class Aconstructor class C constructor
15、 class Dconstructor class E (6分)5. I am fatherI am daughterI am son (8分)四、程序填空(共21分,每空2分)(1)a=_new int(aa) (2)Myclass(int xx)x=xx; (3) GetNum()return x;(4). const char *n (5)strcpy(name,n);(6)public A或:protected A (7)A(n)五、程序设计题(共14分)#include class shapepublic:virtual float getarea()=0;virtual float
16、 getpreim()=0; (3分)class rectangle:public shapeprivate:float h,w;public:rectangle(float hh=1.folat ww=1)h=hh;w=ww;float getarea() return h*w;float getprim() return 2*(h+w); (6分)class circle:public shapeprivate: float radius;public:circle(float r=1) radius=r;float gerarea() return radius*radius*3.14;float gerprim() return 2*3.14*radius; (9分)void main()shape *s3;s1=new rectangle(2,4);s2=new circle(5) (11分)for(int i=1;i3;i+)if(i=1)cout”矩形面积:“;elsecout”圆面积:”coutgetarea()t;if(i=1)cout”矩形周长:”elsecout”圆周长:”coutgetprim()t;coutendl; (14分)5