第九章综合练习题参考答案.doc

上传人:b****9 文档编号:138591 上传时间:2022-10-04 格式:DOC 页数:5 大小:48.50KB
下载 相关 举报
第九章综合练习题参考答案.doc_第1页
第1页 / 共5页
第九章综合练习题参考答案.doc_第2页
第2页 / 共5页
第九章综合练习题参考答案.doc_第3页
第3页 / 共5页
第九章综合练习题参考答案.doc_第4页
第4页 / 共5页
第九章综合练习题参考答案.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第九章综合练习题参考答案.doc

《第九章综合练习题参考答案.doc》由会员分享,可在线阅读,更多相关《第九章综合练习题参考答案.doc(5页珍藏版)》请在冰豆网上搜索。

第九章综合练习题参考答案.doc

第九章综合练习题

请提交本文档!

姓名学号

一、选择题(20分)

1.已知f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针(int(A:

:

*p)(int);)下列赋值语句中,正确的是(B)

A.p=f1; B.p=A:

:

f1; C.p=A:

:

f1() D.p=f1();

2.设有下列说明。

如果要给类Sample的对象s中的成员数据m赋值为5,正确的语句是(C)

#include

classSample{

public:

intm;

};

Samples;

int*p=&s.m;

A.s.p=5; B.s->p=5; C.*p=5; D.*s.p=5

3.下列定义中,Sample是一个类,(B)是定义指向对象数组的指针p。

A.Sample*p[5] B.Sample(*p)[5] C.(Sample*)p[5] D.Sample*p[]

4.this指针是分配给被调用的成员函数的指针,*this表示(D)。

A.成员函数的形参 B.对象所调用的成员函数 C.成员函数种的数据成员 D.调用成员函数的对象

5.下列有关类和对象的说法中,正确的是(C)

A.类和对象没有区别

B.要为类和对象分配存储空间

C.对象是类的实例,为对象分配存储空间而不为类分配存储空间

D.类是对象的实例,为类分配存储空间而不为对象分配存储空间

二、阅读程序题(40分)

1.执行以下程序后,其输出结果是(102+202i)

#include

classComplex{

public:

floatReal,Image;

Complex*Add();

voidPrint()

{ cout<

};

Complex*Complex:

:

Add()

{

Real++;

Image++;

returnthis;

}

voidmain(void)

{ Complexc1={100,200};

c1.Add()->Add();

c1.Print();

}

2.执行以下程序后,输出的第一行是(fun1:

7),第二行是(fun2:

15)。

#include

classA{

public:

intx;

voidfun1(intj){x+=j;cout<<"fun1:

"<

voidfun2(intj){x+=j;cout<<"fun2:

"<

};

voidmain(void)

{ Ac1={2},c2={5};

void(A:

:

*pf)(int);

pf=A:

:

fun1;

(c1.*pf)(5);

pf=A:

:

fun2;

(c2.*pf)(10);

}

三、完善程序题(20分)

下列程序中类T的定义包含两个私有成员数据p1和p2,共有成员函数voidInit(char*s1,char*s2)的功能是将s1和s2所指向的字符串分别送给p1和p2,成员函数voidCopyT(T&t)的功能是将当前对象(指调用该成员函数的对象)的私有成员p1和p2复制给对象t的对应成员变量,成员函数voidFreeT()的功能是释放p1和p2的内存空间。

请完善下面的程序。

#include

#include

classT{

char*p1,*p2;

public:

voidInit(char*s1,char*s2);

voidPrint()

{cout<<"p1="<

voidCopyT(T&t)

{t.Init(p1,p2);}

voidFreeT(void)

{

if(p1)delete[]p1;

if(p2)delete[]p2;

}

};

voidT:

:

Init(char*s1,char*s2)

{

p1=newchar[strlen(s1)+1];

p2=newchar[strlen(s2)+1];

strcpy(p1,s1);

strcpy(p2,s2);

}

voidmain(void)

{

Tt1,t2;

t1.Init("abc","def");

t1.CopyT(t2);

t2.Print();

t1.FreeT();

t2.FreeT();

}

四、程序设计题(20分)

下列是用链表结构实现简单的栈的程序,请补充类stack定义中的Put(intitem)和Get()两个成员函数,这两个成员函数的功能分别是将数据入栈和出栈,数据的进出栈按先进后出的原则。

#include

structNode

{ inta;

Node*next;

};

classstack

{

public:

Node*head;

voidPut(intitem);//将数据item插入到栈中

intGet();//从栈中取一个数据

voidPrint();//输出栈中的数据

voidDestroy();//释放链表的存储空间

};

voidstack:

:

Put(intitem)

{ Node*p=head,*pend;

if(head==NULL){

p=newNode;

p->a=item;

p->next=NULL;

head=p;

}

else{

while(p->next!

=NULL)p=p->next;

pend=p;

p=newNode;

p->a=item;

p->next=NULL;

pend->next=p;

}

}

intstack:

:

Get()

{ Node*p1=head,*p2=head;

intitem;

if(head){

while(p2->next!

=NULL){

p1=p2;

p2=p2->next;

}

item=p2->a;

p1->next=NULL;

deletep2;

returnitem;

}

elsereturn0;

}

voidstack:

:

Print()

{ Node*p=head;

if(head){

while(p){

cout<a<<'\t';

p=p->next;

}

cout<

}

elsecout<<"空栈,没有数据项!

\n";

}

voidstack:

:

Destroy()

{

Node*p=head,*p1;

if(head)

while(p){

p1=p;

p=p->next;

deletep1;

}

}

voidmain(void)

{

stackst={0};

st.Put(10); st.Put(12); st.Put(14);

cout<<"现在栈中的数据项是:

"<

cout<<"现在出栈的数据是:

"<

cout<<"现在栈中的数据项是:

"<

cout<<"现在出栈的数据是:

"<

cout<<"现在栈中的数据项是:

"<

st.Print();

st.Destroy();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1