2006年1月02328面向对象程序设计自考试卷_第1页
2006年1月02328面向对象程序设计自考试卷_第2页
2006年1月02328面向对象程序设计自考试卷_第3页
免费预览已结束,剩余24页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自考软件工程:2006年1月02328面向对象程序设计历年真题及答案以下自考本科软件工程专业:2006年1月02328面向对象程序设计历年真题试卷及答案。更多真题及答案,可在我办网站“历年真题”栏目中查看。建议同学们在自学完软件工程教材后,做几套历年真题,熟悉题型,提高学习能力.全国2006年1月高等教育自学考试面向对象程序设计试题课程代码:02328一、单项选择题(本大题共10小题,每小题2分,共20分)

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。

1.面向对象程序设计中的数据隐藏指的是()

A.输入数据必须输入保密口令

B.数据经过加密处理

C.对象内部数据和代码合并在一起

D.对象内部数据结构的不可访问性2.在C++中,编写一个内联函数Fun,使用int类型的参数,求其平方并返回,返回值也为int类型,下列定义正确的是()

A.intFun(intx){returnx*x;}

B.inlineintFun(intx){returnx*x;}

C.intinlineFun(intx){returnx*x;}

D.intFun(intx){inlinereturnx*x;}3.下面关于重载函数的叙述中正确的是()

A.重载函数必须具有不同的返回值类型 B.重载函数的形参个数必须不同

C.重载函数必须有不同的形参列表 D.重载函数的函数名可以不同4.若有定义“intx=17;”,则语句“cout<<oct<<x;”的输出结果是()

A.11

B.0x11 C.21

D.0215.下列关于析构函数的描述中正确的是()

A.析构函数可以重载

B.析构函数可以是虚函数

C.析构函数名与类名相同

D.析构函数的返回类型为void6.下列关于纯虚函数的描述中,正确的是()

A.纯虚函数是一种特殊的虚函数,它是个空函数

B.具有纯虚函数的类称为虚基类

C.一个基类中说明有纯虚函数,其派生类一定要实现该纯虚函数

D.具有纯虚函数的类不能创建类对象7.下列关于运算符重载的描述中,正确的是()

A.可以改变运算符的目数

B.可以改变运算符的优先级

C.可以改变运算符的结合性

D.可以改变运算符的功能8.要将类A说明是类B的虚基类,正确的描述是()

A.classvirtualB:publicA

B.classB:virtualpublicA

C.virtualclassB:publicA

D.classB:publicAvirtual9.下面关于静态成员的描述中,正确的是()

A.静态数据成员是类的所有对象共享的数据

B.类的每个对象都有自己的静态数据成员

C.类的不同对象有不同的静态数据成员值

D.静态数据成员不能通过类的对象访问10.假设Sample是个类,则语句“Samplea[2],*p[3];”调用构造函数的次数为()

A.0

B.2 C.3

D.5二、填空题(本大题共10小题,每小题2分,共20分)

请在每小题的空格中填上正确答案。错填、不填均无分。

11.在面向对象的程序设计中,将一组对象的共同特性抽象出来形成________________。

12.在C++中要创建一个文件输入流对象fin,同时该对象打开文件“Test.txt”用于输入,则正确的声明语句是________________。

13.如果要把类B的成员函数voidfun()说明为类A的友元函数,则应在类A中加入语句________________。

14.A是一个类,已有语句“A*p;p=newA[10];”。要释放由p指向的动态空间,正确的语句应该是________________。

15.如果一个引用不是用作函数参数或返回值,则在说明该引用时必须对它进行________________。

16.如果要把PI声明为值为3.14159类型为双精度实数的符号常量,该声明语句是________________。

17.在C++中函数原型不但要标识一个函数的返回类型,同时还要标识该函数的________________。

18.类A的后置自增运算符++以成员函数的形式进行重载,其在类内的函数声明是________________。

19.动态联编是通过基类类型的指针或引用调用________________函数来完成。

20.基类的保护成员通过私有派生其在派生类中的访问权限是________________。三、改错题(本大题共5小题,每小题2分,共10分)

21.下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。

classSample

{

private:

intdata;

Sample(){data=10;}

public:

Sample(intd){data=d;}

intoperatorint(){returndata;}

};

22.下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。

#include<iostream.h>

classPoint

{

intX,Y;

public:

Point(){X=0;Y=0;}

Point(intx=0,inty=0){X=x;Y=y;}

voiddisplay(){cout<<X<<","<<Y<<endl;}

};

23.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因。

#include<iostream.h>

template<classT>

voidSwap(T&a,T&b)

{

Tt;

t=a,a=b,b=t;

}

voidmain()

{

inta=3,b=4;

charstr1[5]=”abcd”,str2[5]=”hijk”;

Swap(a,b);

Swap(str1,str2);

cout<<”a=”<<a<<”,b=”<<b<<endl;

cout<<”str1=”<<str1<<”,str2=”<<str2<<endl;

}

24.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因。

#include<iostream.h>

classBase

{

public:

virtualvoidfun(){cout<<"Basefunction"<<endl;}

};

classDerived:publicBase

{

public:

voidfun(){cout<<"Derivedfunction"<<endl;}

};

voidmain()

{

Baseb;

Derived*p=&b;

b.fun();

p->fun();

}

25.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因。

#include<iostream.h>

classA

{

intx;

protected:

inty;

public:

A(intxx,intyy){x=xx;y=yy;}

};

classB:publicA

{

public:

B(inta,intb):A(a,b){}

voiddisplay(){cout<<x<<′,′<<y<<endl;}

};

voidmain()

{

Bb(5,10);

b.display();

}四、完成程序题(本大题共5小题,每小题4分,共20分)

根据题目要求,完成程序填空。

26.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:

2,1

4,3

#include<iostream.h>

classA

{inta;

public:

A(inti=0){a=i;}

intGeta(){returna;}

};

classB

{Aa;

intb;

public:

B(inti=0,intj=0):①{}

voiddisplay(){cout<<a.Geta()<<′,′<<b<<endl;}

};

voidmain()

{

Bb[2]={B(1,2),B(3,4)};

for(inti=0;i<2;i++)

②;

}27.下面程序中A是抽象类。请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:

B1called

B2called

#include<iostream.h>

classA

{

public:

①;

};

classB1:publicA

{

public:

voiddisplay(){cout<<”B1called”<<endl;}

};

classB2:publicA

{

public:

voiddisplay(){cout<<”B2called”<<endl;}

};

voidshow(②)

{

p->display();

}

voidmain()

{

B1b1;

B2b2;

A*p[2]={&b1,&b2};

for(inti=0;i<2;i++)

show(p[i]);

}28.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:

Name:王小明

Grade:90

#include<iostream.h>

#include<string.h>

classPerson

{

charname[20];

public:

Person(char*s){strcpy(name,s);}

voiddisplay(){cout<<”Name:”<<name<<endl;}

};

classStudent:publicPerson

{

intgrade;

public:

Student(char*s,intg):①{grade=g;}

voiddisplay()

{

②;

cout<<”Grade:”<<grade<<endl;

}

};

voidmain()

{

Students(“王小明”,90);

s.display();

}29.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为5。

#include<iostream.h>

classInteger

{intx;

public:

Integer(inta=0){x=a;}

voiddisplay(){cout<<x<<endl;}

①;

};

IntegerMax(Integera,Integerb)

{if(②)

returna;

returnb;

}

voidmain()

{Integera(3),b(5),c;

c=Max(a,b);

c.display();

}

30.请在下面的横线处填上适当内容,以使类的定义完整。

classArray

{

int*ptr;

intsize;

public:

Array(){size=0;ptr=0;}

Array(intn){size=n;ptr=newint[size];}

Array(①)//复制初始化构造函数

{

size=a.size;

ptr=newint[size];

for(inti=0;i<size;i++)

②;//将源对象的动态数组内容复制到目标对象

}

};五、程序分析题(本大题共6小题,每小题5分,共30分)

阅读下面的程序,写出程序运行的结果。

31.#include<iostream.h>

classTest

{

private:

intnum;

public:

Test(intn=0){num=n;num++;}

~Test(){cout<<”Destructorisactive,number=”<<num<<endl;}

};

voidmain()

{

Testx[2];

cout<<”Exitingmain”<<endl;

}32.#include<iostream.h>

classA

{

public:

virtualvoidfun(intdata){cout<<”classA:”<<data<<endl;}

voidfun(char*str){cout<<”classA:”<<str<<endl;}

};

classB:publicA

{

public:

voidfun(){cout<<”classB”<<endl;}

voidfun(intdata){cout<<”classB:”<<data<<endl;}

voidfun(char*str){cout<<”classB:”<<str<<endl;}

};

voidmain()

{A*pA;

Bb;

pA=&b;

pA->fun(1);

pA->fun(“Hello”);

}33.#include<iostream.h>

voidmain()

{

cout.fill('*');

cout.width(10);

cout<<"123.45"<<endl;

cout.width(8);

cout<<"123.45"<<endl;

cout.width(4);

cout<<"123.45"<<endl;

}34.#include<iostream.h>

classNum

{

intX,Y;

public:

Num(intx,inty=0){X=x;Y=y;}

voidvalue(intx,inty=0){X=x;Y=y;}

voidvalue(){

cout<<X;

if(Y!=0)

cout<<(Y>0?’+’:’-’)<<(Y>0?Y:-Y)<<’i’;

cout<<endl;}

};

voidmain()

{Numn(1);

n.value();

n.value(2,3);

n.value();

Numm(3,-4);

m.value();

}35.#include<iostream.h>

classSample

{private:

inti;

staticintcount;

public:

Sample();

voiddisplay();

};

Sample::Sample()

{i=0;

count++;}

voidSample::display()

{cout<<"i="<<i++<<",count="<<count<<endl;

}

intSample::count=0;

voidmain()

{Samplea,b;

a.display();

b.display();

}

36.#include<iostream.h>

classA

{inta;

public:

A(intaa=0){a=aa;cout<<"a="<<a<<endl;}

};

classB

{intb;

public:

B(intbb=0){b=bb;cout<<"b="<<b<<endl;}

};

classC:publicB

{Aa;

public:

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

C(inti,intj):a(i),B(j){cout<<”Cconstructor”<<endl;}

};

voidmain()

{

Cc1,c2(5,6);

}全国2006年1月高等教育自学考试面向对象程序设计试题答案一、选择题

1.D

2.B

3.C

4.D

5.B

6.D

7.D

8.B

9.A

10.B

二、填空题

11.类

12.ifstreamfin("Test.txt")

13.friendvoidB::fun()

14.deletep

15.初始化

16.constdoublepi=3.14159

17.参数类型

18.intoperater++(intx)

19.虚

20.私有的三、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论