2007年深圳大学C++期末考试试卷A

发布时间 : 星期五 文章2007年深圳大学C++期末考试试卷A更新完毕开始阅读

( 密 封 线 内 不 答 题 ) …………………………………………………密………………………………………………封………………………………………线………………………………深圳大学期末考试试卷

开/闭卷 命题人(签字) 张冰 审题人(签字) 2007 年 5 月 29 日 题号 得分 评卷人 学院 专业 姓名 学号 闭卷

课程名称

面向对象程序设计

A/B卷 A卷 学分 2.5

课程编号 22139906

一 二 三 四 五 六 七 八 九 十 基本题总分 附加题 一、单项选择题(每题2分,共40分) 1. ______不是属于面向对象程序设计的特性

A. 抽象性 B. 数据相关性 C. 多态性 D. 继承性 2. 将对某一类数据的处理算法应用到另一类数据的处理中,要用到C++的______

A. 类 B. 虚函数 C. 运算符重载 D. 模板 3. C++与C语言最根本的不同之处在于_______

A. 使用了类 B. 能够实现变量自动初始化 C. 支持软件重用 D. 支持接口重用 4. 动态内存分配的主要目的是_______

A. 使程序按动态联编方式运行 B. 正确合理的使用内存

C. 提高程序的运行速度 D. 提高程序的可维护性 5. 在C++函数的形参前加const关键字,是为了提高函数的_______

A. 数据封装性 B. 可理解性 C. 可维护性 D. 可重用性 6. 函数重载的目的是________

A. 实现共享 B. 使用方便,提高可读性 C. 提高速度 D. 减少空间 7. 从程序片断:char name[] = \可判断函数course的调用采用的是_______ A. 传值调用 B. 带缺省参数值的函数调用 C. 引用调用 D. 传址调用 8. 用来说明类中公有成员的关键字是________

A. public B. private C. protected D. friend 9. 如果一个类的成员函数print()不修改类的数据成员值,则应将其声明为

A. void print() const; B. const void print(); C. void const print(); D. void print(const); 10. 下列关于构造函数的论述中,不正确的是_______

A. 构造函数的函数名与类名相同 B. 构造函数可以设置默认参数

C. 构造函数的返回类型缺省为int型 D. 构造函数可以重载 11. 在程序代码:A::A(int a, int *b) { this->x = a; this->y = b; }中,this的类型是______ A. int B. int * C. A D. A * 《面向对象程序设计》试卷 A 卷 第 1 页 共 8 页

_____________ ________ 12. 内存泄漏是指_______

A. 内存中的数据出现丢失 B.试图释放一个已经释放了的动态分配的堆内存 C. 函数中局部变量所占的栈内存没有及时回收 D. 动态分配的堆内存在程序退出后始终被占用

13. 从程序片断:student zhangsan(\张三\可判断id是一个________

A. 私有成员数据 B. 私有成员函数 C. 公有成员数据 D. 公有成员函数

14. 友元函数_______

A. 可以被声明为const B. 没有this指针

C. 可以用类名或对象名来调用 D. 只能用对象名来调用

15. 若一个类的成员函数前用static关键字修饰,则该成员函数________

A. 可以被声明为const B. 没有this指针

C. 可以访问该类的所有成员 D. 只能用对象名来调用

16. C++是用_______实现接口重用的

A. 内联函数 B. 虚函数 C. 重载函数 D. 模板函数

17. 公有继承的派生类对象可以访问其基类的________

A. 公有成员 B. 公有成员及受保护成员 C. 受保护成员 D. 私有成员

18. 设置虚基类的目的是________

A. 简化程序 B. 使程序按动态联编方式运行 C. 提高程序运行效率 D. 消除二义性

19. 下列关于纯虚函数和抽象类的描述中,不正确的是________ A. 纯虚函数是一个没有具体实现的虚函数

B. 抽象类是包括纯虚函数的类

C. 抽象类只能作为基类,其纯虚函数的实现在派生类中给出

D. 可以定义一个抽象类的对象

20. 关于运算符重载的不正确的描述是________

A. 运算符重载函数是友元函数 B. 体现了程序设计的多态性 C. 增加新的运算符 D. 使运算符能对对象操作 ( C )21、面向对象的4个主要特性是

A. 继承性、多态性、可靠性、可维护性。 B. 抽象性、封装性、正确性、高效性。 C. 抽象性、封装性、继承性、多态性。 D. 抽象性、继承性、完善性、可维护性。

( A )22、下面是有关面向对象的论述,请选择一种正确的说法。

A. 所谓面向对象是指以对象为中心,分析、设计和实现应用程序的机制。 B. 所谓面向对象是指以功能为中心,分析、设计和实现应用程序的机制。 C. 面向对象仅适用于程序设计阶段。 D. 面向对象是一种程序设计语言。

( D )23、下面是有关构造方法的论述,请选择一种正确的说法。 A. 每个类只能有一个构造方法。 B. 构造方法的返回类型是void。 C. 构造方法的参数表必须是空的。

D. 在创建对象的时候,系统将自动地调用这个对象的构造方法,以便完成对象的初始化操作。 《面向对象程序设计》试卷 A 卷 第 2 页 共 8 页

( C )24、下列是有关继承的论述,请选择一种正确的说法。 A. 子类只继承父类的成员变量。 B. 子类只继承父类的成员方法。

C. 子类将继承父类中除私有部分的全部内容。 D. 子类将继承父类中的全部内容。

( C )25、下面是有关缺省访问属性的论述,请选择一种正确的说法。 A. 具有缺省访问属性的成员变量和方法只能被子类访问。 B. 具有缺省访问属性的成员变量和方法只能被本类访问。 C. 具有缺省访问属性的成员变量和方法只能被本包的类访问。 D. 具有缺省访问属性的成员变量和方法只能被其他包的类访问。 ( D )26、下面是有关包的描述,请选择出一种正确的说法。 A. 包是一种文件格式。 B. 包是一种接口。 C. 包是一种特殊的类。

D. 包是类、接口和子包的集合。

二、判断题(8分)

1、在类体内定义的成员函数都是内联函数,在类体外定义的成员函数都不是内联函数。 ( ) 2、构造函数的定义必须在类体内。 ( ) 3、析构函数通常是被自动调用的。 ( )

4、构造函数和析构函数都不能被继承。 ( ) 5、友元函数可以访问类中的所有成员。 ( )

6、运算符重载使用成员函数和友元函数都是一样的。 ( ) 7、构造函数和析构函数都可以为虚函数。( ) 8、静态数据成员是属于某个对象的。 ( ) 三、

二、下面的程序是关于CBook类的一个定义,试改正程序中的错误。(共10分)

#include

#include #inlcude class CBook {

private:

char *p_book; public: p_book=new char[strlen(p_val)+1]

CBook(const char *p_val) { p_book = new char[strlen(p_val)]; strcpy(p_book, p_val); } void print() const { cout << p_book << endl; } ~CBook() { delete [] p_book; } };

void main() {

char book_title[60]; CBook *p_book_obj;

cout << “Enter book title: ”;

《面向对象程序设计》试卷 A 卷 第 3 页 共 8 页

cin >> p; CBook abook(p);

p_book_obj = &abook; p_book_obj->print(); }

三、根据如下所示程序,回答下列问题(共10分)

#include class CJournal {

public:

CJournal() { cout << “Journal default constructor” << endl; } virtual void subscribe() = 0;

void read() { cout << “Read paper” << endl; }

~CJournal() { cout << “Journal default destructor” << endl; } };

class CComputerDesign : public CJournal {

public:

CComputerDesign () {cout << “《Computer Design》default constructor” << endl; } virtual void subscribe() { cout << “Subscribing 《Computer Design》” << endl; } void read() {cout << “Reading 《Computer Design》” << endl; }

~CComputerDesign() { cout << “《Computer Design》default destructor” << endl; } };

void main() {

CComputerDesign journal1; CJournal *p_journal;

journal1.subscribe(); journal1.read(); // ①

p_journal = &journal1; p_journal->subscribe(); p_journal->read(); }

1.当程序运行到①处时,写出程序运行的输出结果 (3分)

2. 当程序结束时,程序会在第1问的基础上增加哪些输出。 (4分)

3. 若在主函数中定义一个对象CJournal journal;程序编译时会否出错?为什么?(3分)

四、编程题(共40分)

1. 定义一个商品类CGoods,其中包含商品号(long no)、商品名(char *p_name)、商品价格(double price)三个数据成员,以及相应的构造函数、拷贝构造函数、析构函数、

《面向对象程序设计》试卷 A 卷 第 4 页 共 8 页

联系合同范文客服:xxxxx#qq.com(#替换为@)