湖北汽车工业学院 面向对象程序设计 考试试卷 - 王晓东 下载本文

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

湖北汽车工业学院 面向对象程序设计 考试试卷(题)

课程编号 020690 考试形式 考试日期

+ 三、单项选择题(每小题2分,共30分)

) 考试时间 120分钟 1. 下列调用方式中,_____是引用调用。

(A)形参是引用,实参是普通变量 (B)形参和实参都是普通变量 (C)形参是指针,实参是地址值 (D)形参是引用,实参是地址值 2. _____不是面向对象程序设计方法所包含的要素。

☆☆☆☆☆☆☆☆ 题号 一 二 三 四 五 六 七 八 九 十 总分 ☆☆☆☆☆☆☆☆号 ☆☆☆☆☆☆☆☆位得分 ☆☆☆☆☆☆☆☆座(☆☆☆☆☆☆☆☆ 阅卷 ☆☆☆☆☆☆☆☆ ☆☆☆☆☆☆☆☆ ☆☆☆☆☆☆☆☆ ☆☆☆☆☆☆☆☆名+ 一、填空题(每个空1分,共10分)

1. 对象由 和方法构成,对象之间通过 进行通信。 ☆☆☆☆☆☆☆☆姓 题☆☆☆☆☆☆☆☆ 答2. 5/2<=3?1:2的值是 ,sizeof(float)的值是 。

得3. 函数调用中又调用了函数自身,这种现象称为函数 ,其实现过程可以分为递推☆☆☆☆☆☆☆☆ 不☆☆☆☆☆☆☆☆ 内和 两个阶段。

线4. 表达式1|2&3的值是 ,表达式3<<1+7/4的值是 。 ☆☆☆☆☆☆☆☆ 订 5. 每个对象都维护了一个指向自身的指针,该指针称为 。 ☆☆☆☆☆☆☆☆号装6. 如果一个类具有纯虚函数,则称该类为 。

☆☆☆☆☆☆☆☆学 ☆☆☆☆☆☆☆☆ ☆☆☆☆☆☆☆☆ + 二、判断题(每小题2分,共20分)

☆☆☆☆☆☆☆☆ ( ) 1. 结构体类型的长度为最长成员的长度。 ☆☆☆☆☆☆☆☆ ☆☆☆☆☆☆☆☆ ( ) 2. 不能在函数声明语句中设置函数的默认形参值。 ☆☆☆☆☆☆☆☆号( ) 3. 可以通过函数形参个数的不同来分辨重载的函数。

☆☆☆☆☆☆☆☆班生( ) 4. 对象的长度为数据成员的长度之和。 ☆☆☆☆☆☆☆☆考☆☆☆☆☆☆☆☆( ) 5. 拷贝构造函数的形参是本类的对象。

☆☆☆☆☆☆☆☆( ) 6. 在类的内部可以直接访问对象成员的私有数据成员。 ☆☆☆☆☆☆☆☆( ) 7. 析构函数的调用顺序与构造函数相同。

☆☆☆☆☆☆☆☆( ) 8. 语句const char *p;表示p是指向常量字符串的指针。 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ( ) 9. -1.2f是合法的C++常量。 ☆☆☆☆☆☆☆☆ ( ) 10. 运算符重载实质上是函数重载。

☆☆☆☆☆☆☆☆ (A)类 (B)模板 (C)对象 (D)继承 3. 以下有关类的说法中,正确的是____。

(A)类是一种用户定义的普通数据类型

(B)通常只有类的成员函数才能存取类中的私有数据成员 (C)不能在类中定义成员函数

(D)在类中如不做特别说明,所有数据成员均为公有类型 4. int x=2,y;

y=x+++x+++x++; 则y的值为_____。

(A)6 (B)7 (C)8 (D)9 5. 是析构函数的特征。

(A)析构函数不可以定义在类体之外 (B)一个类可以定义多个析构函数 (C)析构函数可以有形参 (D)析构函数在对象消亡时自动调用 6. C++语言规定else总是与_______配对。

(A)缩进位置相同的if (B)同一行上的if (C)其之前最近的if (D)其之后最近的if 7. 友元关系 。

(A)可以继承 (B)是双向的 (C) 可以传递 (D)必须显式声明 8. 运算符.*的功能是用来完成 的操作。

(A)对象指针对类成员指针 (B)对象对类成员指针 (C)对象指针对类成员 (D)对象对类成员 9. 已知print是一个类的常成员函数,返回值是常整型引用。下列表示中______是正确的。(A)int& const print( ) (B)int print( ) const

(C)const int& print( ) const (D)const int& print( ) 10. 某个类既有基类、虚基类,还有对象成员。创建该类的对象时,最先调用是 的构造函数。

(A)本类 (B)基类 (C)虚基类 (D)对象成员 11. 对基类的数据成员,一般把它的访问控制属性设置为 。 (A)public (B)protected (C)private (D)static

12. 若用数组名作为函数调用的实参,则传递给形参的是_______。 (A)数组的首地址 (B)数组第一个元素的值 (C)数组全部元素的值 (D)数组元素的个数

13. 下列关于运算符重载的描述中,______是正确的。

(A)可以改变运算符的原有功能 (B)不可以设置为成员函数 (C)不可以设置为友元函数 (D)不可以改变操作数的个数 14. 以下程序的运行结果为______。 #include

#include int main( )

{ int a[3][3]={1,2,3,4,5,6,7,8,9},i;

}

void A::display(void)

{ cout<

a.display(); cout<

cout<

(A)3 6 9 (B)3 5 7 (C)1 5 9 (D)2 4 7 15. 以下程序段错误的地方是_____。 class A { public:

virtual void display(void)=0; (A)

A(int x){a=x;} (B) private:

int a; }; (C) int main( )

{ A b(6); (D)

return(0);

}

+ 四、写出下列程序的运行结果(每小题3分,共12分)

1. #include int x=1; class A{

public: A(int x); void display(void); private: int x;

};

A::A(int x)

{ A::x=x+2;

::x++;

cout<

}

运行结果:

2. #include

int main( )

{ int i,j;

for(i=1,j=1;i<=100;i++,j++)

{ if(j>=10) break; if(j%3==1) j+=2;

}

cout<

运行结果:

3. #include

class A{

public:

A( ) {cout<<”A”;} };

class B{ public:

B( ){cout<<”B”;} };

class C:public B

{ A a; public:

C( ){cout<<”C”;} };

class D: public A,public B { C c; public:

D( ){cout<<”D”;} };

int main( )

{ D d;

return(0); }

运行结果:

4. #include

void sub(int x, int y, int &z) { z=y-x;}

int main( )

{int a,b,c;

sub(3,5,a); sub(1,a,b);

sub(a,b,c);

cout<

}

运行结果:

+ 五、阅读填空(每个空2分,共28分)1. 编制函数fib。计算Fibonacci数列(即1,1,2,3,5,8…)的第n项。

long fib(int n) { long f;

if(n==1____ n==2)

f=________________________________;

else

f=________________________________; return (f);

}

2. 定义学生类stu。数据成员有姓名,学号;方法有构造函数、析构函数、显示。在main函数里声明一个学生对象数组和一个学生对象指针,利用学生对象指针显示所有学生的基本情况。

#include #include class stu{ private:

char *name; int sno;

public:

stu(char *s,int a); ~stu();

void display(void);

};

stu::stu(char *s,int a) {

name =___________________________________________________; ___________(name,s); sno=a;

}

stu::~stu( ) {

_____________________________________________________; }

void stu::display(void)

{cout<

stu a[3]={stu(“zhang”,3),stu(“wu”,2),stu(“li”,4)},*p=a; for(int i=0;i<3;i++ )

_____________________________________________________;

return(0);

}

3. 采用折半查找法在数组中查询某个数据,假设数组已按升序排序。

#include int main( ) {

int a[10]={-12,0,6,16,23,56,80,100,110,114}; int n,low=0,high=9,mid,flag=0; cin>>n;

while(________________________________) {

mid=________________________________; if(n==a[mid]) {

flag=1; break;

}

else if(n>a[mid])

low=mid+1;

else

________________________________;

}

if(flag==1)

cout<<“找到了”<

cout<<“没找到”<

4. 运用多态性,统一计算矩形和圆的周长。

#include const float PI=3.14; class shape{

public:

shape(float x) { a=x;}

________________________________; protected: float a;

};

class rect:public shape {

public:

rect(float x,float y):shape(x)

{ b=y;}

float get_c(void); private: float b;

};

class circle : ________________________________ {

public:

circle(float x); float get_c(void); };

float rect::get_c(void) {return(2*(a+b));}

circle::circle(float x) ________________________________ { }

float circle::get_c(void) { return(2*PI*a);} int main() {

rect s(3,4); circle t(2);

shape *p[2]={&s,&t}; for(int i=0;i<2;i++)

cout<<________________________________<