《福建工程学院期末C++试卷A(共5页).doc》由会员分享,可在线阅读,更多相关《福建工程学院期末C++试卷A(共5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 第 1 页班级:姓名:学号:福建工程学院2009 -2010学年第二学期期末考试 (A卷) 共 9 页 课程名称:面向对象程序设计 考试方式:开卷( )闭卷()题号一二三四五六七八九十总分统分人签名得分 密 封 线考生注意事项:1、本试卷共 9 页,请查看试卷中是否有缺页。 2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。教师注意事项:如果整门课程由一个教师评卷的,只需在累分人栏目签名,题首的评卷人栏目可不签名。一、单项选择题 (每小题2分,共30分)得分评卷人 1. 下列各项描述中( A )是错误的。A同一个类的两个对象占用相同的内存空间。B在类外部直接使
2、用类中的私有成员是错误的。C一个对象数组中的所有数组元素属于同一个类。D在类外部定义成员函数是,必须使用作用域运算符:。2. 编写C+程序一般需经过的几个步骤,( B )描述次序是正确的。A. 编译、编辑、连接、调试 B. 编辑、编译、连接、调试C. 编译、调试、编辑、连接 D. 编辑、调试、编译、连接3.下列描述类的成员函数的选项中,( C )是错误的。A.构造函数 B析构函数C友元函数 D拷贝构造函数4继承机制的作用是( C )A. 信息隐藏 B. 数据封装 C. 定义新类 D. 数据抽象 第2页 5. 假定A为一个类,则执行 “A a(2), b3, *p4;”语句时共调用该类构造函数的
3、次数为( B )。A. 3 B. 4 C. 5 D. 96.以下关于基类中的成员函数的描述中,( C ) 是表示纯虚函数的。A. virtual void vf(int) B. void vf(int) = 0C. virtual void vf()=0 D. virtual void yf(int)7. 如果表达式+a中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为( D )A. a.operator+(1) B. operator+(a)C. operator+(a,1)D. a.operator+()8.以下叙述中( C ) 是正确的。A. 构造函数调用虚函数采
4、用动态联编B. 构造函数可以说明为虚函数C. 当基类的析构函数是虚函数时,它的派生类的析构函数也是虚函数D. 析构函数调用虚函数采用动态联编9. c+程序中,( C ) 可以解决二义性问题。A. 只有使用作用域分辨操作符 B. 使用作用域分辨操作符或赋值兼容规则C. 使用作用域分辨操作符或虚基类D. 使用虚基类或赋值兼容规则 密 封 线班级:姓名:学号: 第 3 页10.下面运算符中,( C )不能被重载。A. = B. C. ?: D. 11.下列有关模板和继承的叙述中( D ) 是正确的。A. 模板和继承都可以派生出一个类系B. 从类系的成员看,模板类系的成员比继承类系的成员较为稳定C.
5、从动态性能看, 继承类系比模板类系具有更多的动态特性D. 相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系12.C+的继承性允许派生类继承基类的( C )。A. 部分特性,并允许增加新的特性或重定义基类的特性B部分特性,但不允许增加新的特性或重定义基类的特性C所有特性,并允许增加新的特性或重定义基类的特性D所有特性,但不允许增加新的特性或重定义基类的特性13.一个函数功能不太复杂,但要求被频繁调用,则应把它定义为 ( A )。A. 内联函数 B. 重载函数 C. 递归函数 D. 嵌套函数14. 假定A为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“del
6、ete px;”语句时共调用该类析构函数的次数为( C )A. 0 B. 1 C. n D. n+1 15.C+中,真正能实现运行时多态的函数是( D )。 A. 内联函数 B重载函数C纯虚函数 D虚函数二、填空题(每空1分,共20分) 第4页得分评卷人 1. 在类中,将关键字_const_写在函数体之前函数头之后,说明该函数是一个常成员函数_,可以防止函数改变数据成员的值。2类中可以有许多相同名称,但参数类型或个数不同的成员函数,称为 函数重载 。3对于双目运算符,若重载为类的成员函数,有 1 个参数;若重载为友元函数,则有 2 个参数。4. 在C+中,声明布尔类型变量所用的关键字是_boo
7、l_。5所有模版都是以_template_关键字和一个形参表开头的。6如果一个类中有一个或多个纯虚函数,则这个类称为 抽象类 。7设要把一个文件输出流对象myFile与文件“f:myText.txt相关联,所用的C+语句是:_myFile.open(“f:myText.txt”);_ _。8. 假设类X的对象x是类Y的成员对象,则“Y Obj”语句执行时,先调用类_x_的构造函数,再调用类_y_的构造函数。9. 基类的公有成员在私有派生类中是_私有_成员,基类的保护成员在公有派生类中是_保护_成员。10. 对虚函数使用对象指针或引用,系统使用_动态_联编,对虚函数使用对象调用时,系统使用_静态
8、_联编。11执行deleted p_操作将释放由p所指向的动态分配的数据空间。12. 静态成员定义的关键字为_static_,一般通过_类名_来访问静态成员。13. 重载“”操作符时,应声明为 _非成员_ 函数。14. 假定用户为类A定义了一个构造函数“A(int aa=0):a(aa)”,则创建该类的对象时,构造函数可以有_?_种不同的调用格式。 密 封 线班级:姓名:学号: 三、程序分析(每小题4分,共20分) 第 5 页得分评卷人 1.阅读程序,写出运行结果:运行结果:X=15X=-5#include iostream.hclass Sample private: int x; publ
9、ic : Sample( ) Sample(int a )x=a; void disp()coutx=xendl;Sample operator+(Sample &);friend Sample operator-(Sample &,Sample &);Sample Sample :operator+(Sample &s)return Sample(x+s.x); Sample operator-(Sample &s1,Sample &s2)return Sample(s1.x-s2.x); void main()Sample obj1(5),obj2(10),obj3;obj3=obj1+o
10、bj2;obj3.disp();(obj1-obj2).disp();2.阅读程序,写出运行结果: #includeclass apublic: virtual void func()coutfunc in class aendl;class bpublic: virtual void func()coutfunc in class bendl; ;class c:public a,public b 第 6 页public: void func()coutfunc in class cendl;运行结果:func in class cfunc in class c;void main()c c
11、;a &pa=c; pa.func();b &pb=c; pb.func();3. 阅读程序,写出运行结果#include class A public: A(char *s)coutsendl; ; class B:virtual public A public: B(char *s1,char *s2):A(s1)couts2endl; ; class C:virtual public A public: C(char *s1,char *s2):A(s1)couts2endl; ;运行结果:Class AClass BClass DClass D class D:public B,C p
12、ublic: D(char *s1,char *s2,char *s3,char *s4) :B(s1,s2),C(s3,s4),A(s1)couts4endl; ; void main() D d(class A,class B,class c,class D); 密 封 线班级:姓名:学号: 第 7 页4. 阅读程序,写出运行结果。#include 运行结果:Class AClass BClass AClass CClass Dclass A protected: int x; public: A(int x)A:x=x; coutclass Aendl; ;class B private
13、: A a1; public: B(int x):a1(x)coutclass Bendl; ; class C:public B private: A a2; public: C(int x):B(x),a2(x)coutclass Cendl; ; class D:public C public: D(int x):C(x)coutclass Dendl; ; void main( ) D doobj(10); 5. 阅读程序,写出运行结果。#include string.hclass Sample private: char *str; public : Sample(char *s )
14、str=new charstrlen(s)+1; strcpy(str,s); 第8页 void disp()coutstr=str=0) objn-1=objn-1-32; n-; obj.disp();四、编程题(每题10分,共30分)得分评卷人 1.编写复数类Complexnumber,其属性为:real(实部),img(虚部)。完成复数的加法运算Add()和减法运算Sub()及对应的+运算符和-运算符重载。2. 设计一个圆类circle和一个桌子类table,另外设计一个圆桌类roundtable,从前2个类派生的,要求输出一个圆桌的高度,面积和颜色等数据。3. 编写程序,计算圆柱体,球体,正方体的表面积和体积。要求用抽象类实现。自己写吧 密 封 线班级:姓名:学号: 专心-专注-专业