2023年面向对象程序设计考核及解答作业四_第1页
2023年面向对象程序设计考核及解答作业四_第2页
2023年面向对象程序设计考核及解答作业四_第3页
2023年面向对象程序设计考核及解答作业四_第4页
2023年面向对象程序设计考核及解答作业四_第5页
已阅读5页,还剩12页未读, 继续免费阅读

下载本文档

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

文档简介

2023春面向对象程序设计单元复习指导(4)

一、填空题:

1.设PX是指向一种类对象的I指针变量,则执行''deletepx;〃语句时,将自动调用该类的

()。

A.无参构造函数B.带参构造函数C.析构函数D.拷贝构造函数

2.假定AB为一种类,则执行''ABa[10];〃语句时调用该类无参构造函数的次数为

()。

A.0B.1C.9D.10

3.假定AB为一种类,则执行、、ABa(2),b[3],*p[4];〃语句时共调用该类构造函

数的次数为()。

A.3B.4C.5D.9

4.假定AB为一种类px为指向该类时一种具有n个对象的动态数组的指针,则执行“de

1cte口px;”语句时共调用该类析构函数的次数为()0

A.0B.1C.nD.n+1

5.对类中引用组员口勺初始化是通过构造函数中给出的()实现的。

A.函数体B.参数表C,初始化表D.初始化表或函

数体

6.一种类的静态数据纪员所示属性()o

A.是类『、J或对象的属性B.只是对象的属性

C.只是类的属性D.类和友元的属性

7.被非静态组员函数访问口勺类的数据组员()o

A.可以是非静态数据组员或静态数据组员B.不也许是类H勺静态数据组员

C.只能是类日勺非静态数据组员D.只能是类日勺静态数据组员

8.引入友元日勺重要目日勺是为了()。

A.增强数据安全性B.提高程序H勺可靠性

C.提高程序日勺效率和灵活性D.保证类的封装性

9.在重载一种运算符时,其参数表中没有任何参数,这表明该运算符是()o

A.作为友元函数重载日勺1元运算符B.作为组员函数重载日勺1元运算

符

C.作为友元函数重载H勺2元运算符D.作为组员函数重载的2元运算符

10.假如体现式a+b中的“+”是作为组员函数重载的运算符,若采用运算符函数调用格

式则可体现为()。

A.a.operator+(b)B.b.operatc>r4-(a)

C.operator+(a,b)D.operator(a+b)

11.假如体现式a++中H勺“什”是作为一般函数重载H勺运算符,若采用运算符函数调用格式,则

可体现为()。

A.a.operator4-+0B.operator-H-(a)

C.operator+4-(a,1)D.operator++(l,a)

12.一种程庠中数蛆a和变量k定义为'int2[5][10]*:",且程序中包具有语句匕(2,

5)』+k*3;”,则此语句中肯定属于重载操作符的是()。

A.()B.=C.++D.*

13.下面是重载双目运算符+的一般函数原形,其中最符合+本来含义的是()。

A.Va1ueoperator+(Va1ue,Vaiue);B.Valueoperator+(Va1

tie,int);

C.Value&operator+(Vaiue,Value);D.Value&operator+(Vai

ue&,Vaiue&);

14.有关插入运算符《的重载,下列说法不对日勺的是()o

A.运算符函数的返回值类型是。stream&。

B.重载的运算符必须定义为类H勺组员函数。

C.运算符函数的第一种参数的类型是ostream&o

D.运算符函数有两个参数。

15.C++的继承性容许派生类继承基类的()。

A.部分特性,并容许增长新H勺特性或重定义基类H勺特性

B.部分特性,但不容许增长新的特性或重定义基类的特性

C.所有特性,并容许增长新的特性或重定义基类的特性

D.所有特性,但不容许增长新H勺特性或重定义基类H勺特性

二、填空题

1.当一种队列为满时,不能对其做元素的操作。

2.在一种用链表实现的队列类中,假定每个结点包括啊百域用elem体现包括的指针域用

next体现,链队mJ队首指针用elemHead体现,队尾指针用elemTail体现,当链队非空时,

指向队首结点口勺后继(即下一种)结点。

3.在一种用链表实现日勺队列类中,若链队为空或只具有一种结点,则队首指针日勺值与队尾

指针的I_________。

4.一种类的函数一般用于实现释放该类对象中指针组员所指向的动态存储空

间日勺任务。

5.定义类动态对象数组时,其元素只能靠自动调用该类的________来进行初始化。

6.假定AB为一种类,则执行“ABa[10];”语句时,系统自动调用该类构造函数日勺次数为—

7.对类中引用组员的初始化只能通过在构造函数中给出口勺__________来实现。

8.假定要把aa定义为AB类中的一种引用整数型数据组员,则定义语句为

9.假定顾客为类AB定义了一种构造函数“AB(intaa){a=aa;}",则系统(会/不会)_

为该类自动定义一种无参构造函数〃AB()(}"o

10.假定顾客为类AB定义了一种构造函数“AB(intaa=0):a(aa){}",则定义该类的

对象时,可以有种不同样H勺定义格式。

11.派生类的组员函数可以直接访问所含基类H勺组员函数和

组员函数。

12.在定义一种派生类时,使用private关键字体现为私有继承,使用关键字

体现为公有继承。

三、程序填空:

1.已知一种运用数组实现栈H勺类定义如下:

constintARRAYSIZE=1O;

classStack{

public:

ftvoidInit(){top=-l;}//初始化栈为空

voidPush(intnewE1em);//向栈中压入一种元素

ointPopO;〃从栈顶弹出一种元素

oboolEmpty(){〃判栈空

if(top=-1)returntrue;e1sereturnfa1se;}

4ntDepth(){returntop+1;}//返回栈Fj深度

voidPrint();

〃按照后进先出原则依次输出栈中每个元素,直到栈空为止

private:

ointelem[ARRAY_SIZE];〃用于保留堆栈元素的数组

inttop;〃指明栈顶元素位置的指针

);

该类的Pop^JPrint函数的实现分别如下:

____⑴―{

if(top==-1){

。cout«"栈空!"«end1;

。exit(l);//中断运行

)

return___(2)___;

)

voidStack::Print(){

while(!Empty())

ocout«____(3)«z';

}

⑴(2)⑶

2.#inc1ude<iostream.h>

#inc1ude<std1ib.h>

classA{

int*a;intn;intMaxLen;

pub1ic:

A():a(0),n(0),MaxLen(0){)

A(int*aa,intnn,intMM){

n二nn;

MaxLen=MM;

if(n>McixLen)exit(l);

(1);//由a指向长度为MaxLen的|动态数组

for(inti=0;i<n;i++)a[i]=aa[i];

}

~A(){delete口a;}

intGetVa1ue(inti)⑵〃函数体返回a[i]日勺值

};

voidmain()

(

intb[10]={l,2,3,4,5,6,7,8,9,10};

Ar(b,10,10);

inti,s=0;

for(i=0;i<10;i++);___(3)___〃把r对象H勺a数据组员中H勺每个

//元素值依次累加到s中

cout«,zs=n«s«end1;

(1)⑵(3)

3.在下面一段类定义中,Derived类公有继承了基类Base。需要填充日勺函数由注释内

容给出了功能。

classBase

private:

intmem1,mem2;〃基类日勺数据组员

public:

。Base(intml,intm2){

ineml=ml;mem2=m2;

)

。voidoutput0{cout«ineml«,'«mem2«,;)

//...

);

0

classDerived:publicBase

(

private:

intmem3;//派生类自身H勺数捱组员

public:

〃构造函数,由ml和m2分别初始化memlfOmem2,Sm3初始化mem3

Derived(intml,intm2,intm3):

//输出niemLniem2和mem3数据蛆员欧J俏

voidoutput(){

__(1);cout«mem3«endl;

0}

//...

);

Derived::Derived(intml,intm2,intm3):____(2){(3)___;}

(1)(2)(3)

四、写出程序运行成果:

1.#include<iostrcam.h>

classFranction{//定义分数类

intnumc;//定义分子

intdeno;〃定义分母

public:

〃把*this叱简为最简分数,详细定义在比外文献中实现

@voidFranSimp();

//返回两个分数*this和x之和,详细定义在此外文献中实现

cFranctionFranAdd(constFranction&x);

〃置分数口勺分子和分母分别0和1

voidTnitFranction(){nume=0;deno=1;}

〃置分数的分子和分母分别n和d

voidTnitFranction(intn,in:d){nume=n;deno=d;}

〃输出一种分数

»voidFranOutput()(cout«nume<<,/'«deno«end1;}

};

woidmain()

Franctiona,b,c,d;

a.InitFranction(6,15);

b.InitFranction(3,10);

c.InitFranctionO;

c=a.FranAdd(b);

d=c.FranAdd(a);

8cout<<z"a:";a.FranOutput();

cout<<z,b:〃b.FranOutput(1;

cout<<,zc:〃;c.FranOutput();

cout«"d:d.FranOutput();

}

2.#include<iostream.h>

classA{

inta,b;

publie:

A(){a=b=0;}

A(intaa,intbb){a=aa;bib;}

ointSiunO{returna+b;}

int*MultO{

。int*p=newint(a*b);

«>returnp;

}

);

voidmain(){

int*k;

®Ax(2,3),*p;

p=newA(4,5);

cout«x.Sum()<<>,«*(x.MuIt())«endl;

cout«p->Sum()«*'«*(k=p->Mult())«end1;

deletek;

)

五、指出程序或函数的功能

1.intCount(IntNode*f)

if(!f)return0;

intc=0;

while(f){

3C++;

f=f->next;

)

returnc;

}

假定IntNodeH勺类型定义为:

structIntNode{

intdata;〃结点值域

IntNode*next;//结点指针域

};

2.intf(constchar*s)

(

inti=0;

while(*s++)i++;

returni;

):

六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误。

1.卜面是分数类fract的定义及测试主程序,在类定义及其友元函数定义中有两处错误,

改正错误后程序应显示41/28,请指出错误所在行的行号并给出改正意见。

classfract{

intden;

intnum;〃分母

public:

fract(intd=0,intn=1):den(d),num(n){)〃1行

friendfract&operator+=(fract,fract&);//2行

voidshow(){cout«den«}/«num;}〃3行

);//4行

friendfract&operator+=(fractfl,fractf2)//5行

{Hl行

f1.den=f1.den*f2.num+f1.num*f2.den;//8行

f1.num*=f2.num;//9行

returnfl;//10行

voidmain(){

fractfr(3,4);

fr+=fract(5»7):

fr.show();

)

错误行的行号为_________和

分别改止为一

和

4《面向对象程序设计》单元复习指导四参照答案

一、选择题:

1.C2.D3.B4.C5.C6.C7.A8.C9.B10.A

11.C12.A13.A14.B15.C

二、填空题:

1.插入2.E1emHead->next3.相似4.析

构

5.无参构造函数6.107.初始化表8.int&aa;

9.不会10.211.公有12.Pub1ic

三、程序填充参照解答

1.(1)intStack::Pop()⑵elem[top一-]

温馨提示

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

评论

0/150

提交评论