面向对象程序设计C++模拟试卷 联系客服

发布时间 : 星期二 文章面向对象程序设计C++模拟试卷更新完毕开始阅读

int getx() { return x; } int gety() { return y; } };

class Circle : public Point { private: int r; public:

Circle(int a, int b, int c) : Point(a,b) { r = c; } int getr() { return r; }

float area() { return 3.14.159 * r * r; } };

面向对象程序设计C++模拟试卷

考试时间:90分钟

一.简答题(10分)

1.1 (3分)在C++中什么可以充当友元?友元是否可以继承,为什么? 答案:在C++中函数和类都可以充当友元,分别称为友元函数和友元类。(1分) 友元不可以继承,因为友元不是类的成员。(2分)

1.2(3分) 什么是纯虚函数?什么是抽象类?

答案: 纯虚函数是一种没有实现体的虚函数,该函数的实现要在定义它的类的派生类中实

现。(2分)

具有纯虚函数的类称为抽象类。抽象类是一种特殊的类,该类不能创建对象。(1分)

1.3 (4分)运算符重载有哪两种形式?这两种形式有何区别? 答案:运算符重载有两种形式:成员函数形式和友元函数形式。(1分)

区别:使用成员函数形式时,对单目运算符没有参数,对双目运算符仅有一个参数;使用友元函数形式时,对单目运算符有1个参数,对双目运算符有2个参数。成员函数方式可以继承,友元函数方式不能继承。(3分)

二.填空题(20分,每空2分)

2.1定义如下变量和数组

int i;

int x[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; 则下面语句的输出结果是 。

for(i = 0; i < 3; i++) cout << x[i][1] << '\\t'; 答案:2 5 8

2.2 若要把类bClass定义为类aClass的友元类,则应在类 的定义中加入语句 。

答案:aClass,friend class bClass

2.3 在C++中,模板可以分为 和 。 答案:函数模板,类模板

2.4 在公有继承中,派生类的对象可以访问基类中的 ;派生类的成员函数可以访问基类中的 。 答案:公有成员;公有成员和受保护成员

2.5 流程控制语句的基本控制结构有三种: 、 和 。 答案:顺序结构,循环结构,选择结构

三.单项选择题(20分,每题2分)

3.1 下列程序段的循环次数为 次。

int x = -10; while( ++x ) { }

A. 9

B. 10

C. 11

D. 无限

答案:A

3.2 已知枚举类型enum Day {Monday, Tuesday, Wednesday, Friday = 2}; 下列语句中, 是合法的。 A. Wednesday == Friday ? 1 : 0 C. Day day; day = Monday + 3; 答案:A

3.3 能正确表示逻辑关系“a大于等于10或a不大于0”的C++表达式是 。

B. Day day; day = 3; D. Tuesday = 4;

A. a >= 10 or a = 0 C. a >= 10 && a <= 0 答案:D

B. a >= 10 | a <= 10 D. a >= 10 || a <= 0

3.4 在函数定义前加上关键字inline,表示该函数被定义为 。 A. 重载函数 答案:B

3.5 在下面的类定义中,错误的语句是 。 class Sample { public:

Sample (int val); ~Sample(); private:

int a = 2.5; Sample(); }; 答案:C

3.6 下列对派生类的描述中,错误的是 。 A. 一个派生类可以作为另一个派生类的基类 B. 派生类至少有一个基类

C. 派生类的缺省继承方式为private

D. 派生类只继承了基类的公有成员和受保护成员 答案:D

3.7 实现运行时的多态性要使用 。 A. 重载函数 答案:D

3.8 下列C++变量定义语句中, 是合法的。

A. short _a = 1 - .1e-1; C. long do = 0xfdaL;

B. double b = 1 + 5e2.5; D. float 2_and = 1 – e-3;

B. 析构函数

C. 构造函数

D. 虚函数

// C // D

// A // B

B. 内联函数

C. 成员函数

D. 友元函数

答案:B

3.9 下列对类的构造函数和析构函数的描述中,正确的是 。

A. 构造函数可以重载,析构函数不能重载 B. 构造函数不能重载,析构函数可以重载 C. 构造函数和析构函数都可以重载 D. 构造函数和析构函数都不能重载 答案:A

3.10下列各函数的说明中,表示纯虚函数的是 。

A. virtual int vf(int);

B. void vf(int) = 0; D. virtual void vf(int) {}

C. virtual int vf(int) = 0; 答案:C

四.读程题(20分,每题5分)

4.1 给出下述源程序的运行结果。 #include struct abc { int a, *b; } *p; int x[] = {6,7}, y[] = {8,9}; void main() {

struct abc a[] = {20, x, 30, y}; p = a;

cout << *p->b << \ cout << (*p).a << \ cout << (++p)->a << \ cout << ++(*p).a << endl; }

答案:6, 20, 30, 31

4.2 阅读下列源程序: #include int f1(int i, int i) { int k = i * j; while(i != j) { if( i > j ) i -= j;