033054A1面向对象程序设计A卷

2020-06-16 23:25

上海电机学院 2012–2013学年第二学期

(033054A1)《面向对象程序设计》课程期末考试试卷

开课学院:电子信息学院 考试时间120 分钟 计算器× 草稿纸√

答题卡√

A卷

考试形式:闭卷√

考生姓名: 学号: 班级:

题序 得分 评卷人 一 二 三 四 五 总 分 一、填空题(共18分,每空格1分)

1. 公共派生(public)中,基类的公有成员在派生类中是 。

2. 若要使用标准输入流机制从键盘输入一个整数赋给整型变量a,相应的C++语句是 。

3.函数重载可使一个函数名具有多种功能,称这种特性为 。 4.C++中重载“+”运算符的函数名是 。

5.设为类A添加一个纯虚函数Fun,其第一个参数类型为整型,第二个参数类型为字符型,

函数返回值类型为整型。实现此操作的语句是 。 6.C++函数中按引用调用传递参数时使用 作为参数。 7. 设A为test类的对象且赋有初值,则语句test B(A); 表示 。 8.C++中istream类的直接基类是 。

9.要关闭一个文件输出流对象myFile,所用的C++语句是 。

10. 静态成员函数 访问类的静态数据成员, 可以访问类的非静态数据成员和静态成员。

11.在私有派生中,基类的权限为private的成员,在派生类中 。 12. 在常成员函数里不能更新对象的数据成员,也不能调用该类中没用 关键字修饰的成员函数。

13. 利用成员函数对二元运算符重载,其左操作数为 ,右操作数为成员函数参数。 14.假定AB为一个类,该类中构造函数含有一个语句 new申请存储空间,则在该类的析构函数中应该包含有一条______________语句。

15.C++根据文件内容的数据格式可分为两类: 文本文件 和 二进制文件 。前者存取 的最小信息单位为 ,后者

16.引进虚基类的根本目的是为了消除 。

二.选择题(每题1分,共18分)

1.构造函数用于( )。

A.定义对象 B.清除对象

C.初始化对象 D.普通计算

1 / 6

2.对于类中的成员,使用private修饰,表明该成员的访问权限是( )。

A.公有的 B.私有的 C.保护的 D.不可见的 3.如声明对象数组,则下列描述正确的是( ) 。

A.对每个元素均调用一次构造函数 B.部分元素调用构造函数,其它元素不需调用 C.均不需要调用构造函数 D.只是首元素调用构造函数 4.下列哪个要素不是面向对象的关键要素( ) 。

A. 继承性 B.抽象性 C.封装性 D. 模块化 5.下列对于类的描述错误的是( ) 。

A.类要先声明后使用 B. 类是具有唯一标识的实体

C.两个类可以使用同一个名称 D.组成类的不仅有数据,还可以有对数据进行操作的函数 6.使用引用调用方式将实参传给形参,下列说法正确的是( ) 。

A.形参是实参的备份 B. 形参和实参共享同一对象 C. 实参是形参的备份 D.形参和实参无联系 7. 对类AA,复制构造函数的原型是( )。

A. AA::AA(const AA &); B. AA::AA(const AA *); C.AA::AA(const AA); D.AA::AA( );

8. 如果一个类至少有一个纯虚函数,那么就称该类为( )。

A.派生类 B.基类 C.抽象类 D.以上都不对 9. 友元的声明可出现在( )。

A.类的私有部分 B.类的公有部分 C.类的保护部分 D.类的任何部分 10. 类A中存在静态数据成员x,设a和b是类A的两个对象,在执行a.x=10之后,b.x 的值为( )。

A.未初始化 B.等于10 C.等于0 D.随机

11.C++中专门定义一个仅在模板中使用的参数类型的关键字是( )。

A.const B.inline C.typename D.shor t 12.当派生类中有和基类一样名字的成员时,一般来说,( )。

A. 将产生二义性 B. 派生类的同名成员将覆盖基类的成员 C. 是不能允许的 D. 基类的同名成员将覆盖派生类的成员 13.使用new创建的对象,对其生命周期描述正确的是( )。

A.由用户控制 B.由系统决定 C.全局生命周期 D.永久存在 14.析构函数被调用的时间点是( )。

A.对象被创建时 B.不会被调用 C.对象被销毁时 D.主函数被调用时 15.read()函数的功能是从输入流中读取( )。

A.一个字符 B.当前字符 C.指定若干字节 D.一行字符 16.关于友元的描述中,( )是错误的。

A.友元函数是成员函数,它被说明在类体内 B.友元函数可直接访问类中的私有成员 C.友元函数破坏封装性,使用时尽量少用 D.友元类中的所有成员函数都是友元函数 17. C++中的虚基类机制可以保证:( )。

A. 限定基类只通过一条路径派生出派生类

B. 允许基类通过多条路径派生出派生类,派生类也就能多次继承该基类

C. 当一个类多次间接从基类派生以后,派生类对象能保留多份间接基类的成员

2 / 6

D. 当一个类多次间接从基类派生以后,其基类只被一次继承 18.类模板的模板参数( )。

A.只能作为数据成员的类型 B.只可作为成员函数的返回类型 C.只可作为成员函数的参数类型 D.以上三种均可

三、看程序,写出运行结果(共20分,每题4分)

1. #include

using namespace std; class point { int x,y; public:

point(int n=1,int m=2) {x=n; y=m; cout<<\ ~ point(){cout<<\} ;

void main() {

point P(3),Q(5,5);

cout<<\}

2. #include

class M { public:

M(int a) { A=a;B+=a;} static void f1(M m); private: int A;

static int B; };

void M::f1(M m)

{ cout<<\ cout<<\ } int M::B=0; void main( )

{ M P(4),Q(6); M::f1(P); M::f1(Q); }

3. #include class BB

{ int x,y; public:

BB(int i=0,int j=1) { x=i; y=j;} BB operator * (BB z) { BB d; d.x=10*x *z.x; d.y=10*y*z.y; return d;} BB operator /(BB c)

3 / 6

{ BB d; d.x=10*x/c.x; d.y=10*y/c.y; return d;} void show() {cout<<'('<

void main()

{ BB a(3,2) , b(2,5),c; c=a*b; c.show(); c=a/b; c.show(); }

4. #include class CC { public:

CC(){cout<<\调用基类构造函数.\

void show() {cout<<\调用基类函数 show().\\n\};

class SUBCC: public CC { public:

SUBCC(){cout<<\调用派生类构造函数.\

void show() {cout<<\调用派生类函数 show().\\n\};

void main()

{ CC tem; SUBCC obj; obj.CC::show(); obj.show(); tem=obj; tem.show(); }

5. #include class DD

{ public:

virtual void display(){cout<<\ };

class DDA:public DD { public:

void display(){cout<<\ };

class DDB:public DD

{ void display(){cout<<\ };

void fun(DD *ptr) { ptr->display( );} void main( ) { DD b0,*p; DDA b1; DDB d1;

p=&b0; fun(p); p=&b1; fun(p); p=&d1; fun(p); }

四.程序填空(每空2分,共12分)

1. 定义一个字符串onestr,包含一个存放字符串的成员变量,能够通过构造函数初始化字符串,通过成员函数显示字符串的内容。在此基础上派生twostr类,增加一个存放字符串的成

4 / 6

员变量,并能够通过派生类的构造函数传递参数,初始化两个字符串,通过成员函数进行两个字符串的合并以及输出。 #include #include class onestr { protected:

char str1[30]; public:

onestr(char *p) {strcpy(str1,p);} };

class twostr: public (1) { char str2[40]; public:

twostr(char *q1,char *q2): (2) {strcpy(str2,q2);}

void display() { strcat(str2,str1); cout<

void main()

{ twostr ch(\ (3) ; //显示对象ch值 }

2. 将0~100之间的整数写入D盘上的write1.dat文件。

#include < iostream.h > #include < stdlib.h > #include < fstream.h > void main ()

{ ofstream (1) ;

file1.open ( \ if ( ! file1 )

{ cerr << \ exit (-1) ; }

for (int k=0 ; k<=100 ; k++ )

(2) << k << \ file1. (3) ; }

五.编写程序题(32分,每题8分)

1. 定义一个日期类date,它有三个私有数据成员:年、月、日和若干个成员函数,并实现如下要求:

(1)用构造函数对数据成员赋值;

(2)定义一个函数打印日期(输出格式年.月.日)。 并要求对数据输入、输出。

2. 利用成员函数重载运算符,使对整形数的运算符+、-适用于分数运算。要求进行数据输入输出。

5 / 6

3. 建立一个基类Building ,用来存储一座楼房的层数、房间数以及它的总平方英尺数。建

立派生类Housing,继承Building,并存储下面的内容:卧室(bedrooms)和浴室(bathrooms)的数量,另外,建立派生类Office,继承Building,并存储灭火器(extinguishers)和电话(phones)的数目。然后,编制应用程序,建立住宅楼对象和办公楼对象,并输出它们的有关数据。 程序代码:

4. 应用抽象类,求圆、圆内接正方形和圆外切正方形的面积。 。

6 / 6


033054A1面向对象程序设计A卷.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016年新版《煤矿安全规程》条文对照 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: