面向对象程序试题6

更新时间:2024-04-24 11:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

中国计量学院《面向对象程序设计》

课程考试试卷(C) 一、填空题(每空1分,共20分)。 1.所有的面向对象程序设计语言,都支持三个共同的本质特征___、___、___。 2.为了解决程序中函数调用的效率问题,引入了___,定义时需在函数前面加上___说明;为了提高程序的运行效率,引入了___,定义时需在函数前面加上___说明。 3.在类的定义当中,缺省的成员是__成员。 4. 请填写下列表格(填写派生类中成员的类型)。

派生publprivaprotec类继承方式 ic te ted 基类中成员类型 public Privat不可不可不可见 e 见 见 protec ted 5.利用成员函数对二元运算符进行重载时,其左操作数为___,右操作数为___。

6.设置虚基类的目的是___,可通过___标识虚基类。 7.动态联编是在___的支持下实现的,它通过___来调用该函数操作。 二、选择题(每题2分,共20分) 1.下列关于类型转换的描述中,()是错误的。 A、在不同类型操作数组成的表达式

中,其表达式类型一定是最高类型double型; B、逗号表达式的类型是最后一个表达式的类型;

C、赋值表达式的类型是左值的类型;D、由低向高的类型转换是保值映射。

2.()不是构造函数的特征。 A、构造函数的函数名与类名相同; B、构造函数可以重载;

C、构造函数可以设置缺省参数; D、构造函数必须指定类型说明 3.在C++中,关于下列设置参数默认值的描述中,()是正确的。 A、不允许设置参数的默认值; B、设置参数默认值只能在定义函数时设置;

C、设置参数默认值时,应该是先设置右边的,再设置左边的; D、设置参数默认值时,应该全部参数都设置

4.关于new运算符的下列描述中,()是错误的。 A、它可以用来动态创建对象和对象数组;

B、使用它创建的对象或对象数组可以使用运算符delete删除; C、使用它创建对象时要调用构造函数;

D、使用它创建对象数组时必须指定初始值。

5.重载函数在调用时选择的依据中,()是错误的。 A、参数个数; B、参数的类型; C、函数名字; D、函数的类型

6.下列描述中,()是抽象类的特性。 A、可以说明虚函数; B、可以进行构造函数重载; C、可以定义友元函数; D、不能说明其对象。

7.()是析构函数的特征。 A、一个类中只能定义一个析构函数; B、析构函数名与类名不同; C、析构函数的定义只能在类体内; D、析构函数可以有一个或多个参数; 8.关于delete运算符的下列描述中,

()是错误的。

A、它必须用于new返回的指针; B、它也适用于空指针;

C、对一个指针可以使用多次该运算符;

D、指针名前只有一对方括号符,不管所删除数组的维数。

9.const int *p说明不能修改()。 A、p指针;

B、p指针指向的变量; C、p指针指向的数据类型; D、上述A、B、C三者

10、关于子类型的描述中,()是错误的。

A、子类型就是指派生类是基类的子类型;

B、一种类型当它至少提供了另一种

类型的行为,则这种类型是另一种类型的子类型;

C、在公有继承下,派生类是基类的

子类型; D、子类型关系是不可逆的 三、改错题(共15分)

1. 找出下面程序中的错误,并说明原因。

class X { public:

int readme() const {return m;}

void writeme(int i) {m=i;}

private:

int m;

};

void f(X& x1,const X& x2)

{

x1.readme(); x1.writeme(1); x2.readme(); x2.writeme(2); }

2.找出下面程序中的错误,并改正。

#include

class TV {

void SetStation(int Station); int GetStation(); private: int itsStation; }

void main() { TV myTV;

myTV.itsStation=9;

TV.SetStation(10);

TV myOtherTV(2);

cout<

}

四、写出下列程序的输出结果(每题

10分,共20分)。 1、#include

class Test; void fun1(Test t); Test fun2(); class Test {

public:

Test(int n=1)

{val=n; cout<<\l; }

Test(const Test& t) {val=t.val; cout<<\con.\

Test& operator = (Test& t) {

val=t.val;

cout<<\ return *this; } private: int val;

};

void main()

{

Test t1(1);

Test t2=t1; Test t3; t3=t1; fun1(t2); t3=fun2(); }

void fun1(Test t){} Test fun2() { Test t; return t; }

2、#include

class A { public:

A(){cout<<\~A(){cout<<\des.\};

class B

{

public:

B(){cout<<\

~B(){cout<<\des.\};

class C:public A,public B { public:

C():member(),B(),A() {cout<<\ ~C(){cout<<\

private: A member; };

void main()

{

C obj;

}

五、将下列程序补充完整(每空2分,共16分)。

1. 输出所有pumpkin的总重量。

#include class pumkin { public: ___(1)___ {

weight=w;

total_weight++;

}~pumkin() {

(2)

}

static void total_display() {

cout<<\\pounds.\

}

private:

int weight;

static int total_weight;

};

___(3)___ void main() {

pumpkin

p1(15),p2(20),p3(12); ___(4)___ }

2. 华氏温度转换为摄氏温度的公式为:C=(F-32)/1.8。

#include class convert { public:

convert(double i) {val1=i;}

___(1)___ protected: double val1; double val2; };

//liters to gallons class l_to_g { public: ___(2)___ void compute() {

val2=val1/3.7854;

cout<

\} };

//Fahrenheit to Celsius class f_to_c:public convert {

____(3)___ };

void fun(__(4)__) {

f.compute(); }

void main() {

l_to_g lgobj(4); f_to_c fcobj(70); fun(lgobj); fun(fcobj); }

六、定义一个表示三维空间坐标点的

类,并对下列运算符重载。(共9分)1、<<:按 (x,y,z) 格式输出该点坐标(坐标为整型);(5分)2、 > :如果A点到原点的距离大于B点到原点的距离,则A>B为真,否则为假。(4分)

一、填空题(每空1分,共20分)。1.类、对象、继承

2.内联函数、inline、友元、friend 3.私有的(private) 4.public private

protected protected private

protected

5.this指针、成员函数形参

6.解决二义性问题、virtual 7.虚函数、指针或引用

二、选择题(每题2分,共20分)。 };//类定义结束时未使用语句结束符; void main() {

1.A2.D3.C4.D5.D 6.D7.A8.C9.B10.A 三、改错题(共15分)。 1.x2.writeme(2);出错。原因如下:非常对象可以调用常成员函数和非常成员函数,而常对象只能调用常成员函数。 2.参考答案如下: #include class TV {

public: //成员默认访问权限为private,不能被类的对象所访问 void SetStation(int Station);

int GetStation(); private:

int itsStation;

TV myTV;

myTV.SetStation(9);

//私有成员不能被类对象myTV直接访问

myTV.SetStation(10); TV myOtherTV; //使用

默认构造函数建立对象时不需要提供

参数

cout<

四、写出下列程序的输出结果(每题

10分,共20分)。 1. Con.

Copy con. Con. Assignment. Copy con. Con.

Copy con. Assignment.

2. A's con.

B's con. A's con. C's con. C's des. A's des. B's des. A's des.

五、将下列程序补充完整。(每空2

分,共16分)

1.(1) pumpkin(int w)

(2) total_weight-=weight;

(3) int

pumpkin::total_weight=0;

(4) pumpkin::total_display(); 说明:(1)源程序中pumkin应为pumpkin;

(2)total_weight++;应为

total_weight+=weight;

2. (1) virtual void compute()=0;

(2) l_to_g(double i):convert(i) {}

(3) public:

f_to_c(double

i):convert(i) {}

void compute() {

val2=(val1-32)*5/9;

cout<

Fahrenheit is \Celsius.\

}

(4) convert& f

六、编程(共9分)。

#include #include class Point3D { public:

Point3D(int xx=0,int yy=0,int zz=0):x(xx),y(yy),z(zz) {} friend bool operator >(const Point3D& A,const Point3D& B);

friend ostream& operator

<<(ostream& ostr,const Point3D& p); private:

int x,y,z;

};

bool operator >(const Point3D& A,const Point3D& B) { double

disA=sqrt(A.x*A.x+A.y*A.y+A.z*A.z); double

disB=sqrt(B.x*B.x+B.y*B.y+B.z*B.z);

return (disA>disB)?true:false; }

ostream& operator <<(ostream& ostr,const Point3D& p) {

ostr<<'('<

<

return ostr;

}

void main()

{ Point3D p1(1),p2(2,3,4); if(p1>p2)

cout<<\

p1:\point.\ else

cout<<\

p2:\point.\}

本文来源:https://www.bwwdw.com/article/80pp.html

Top