第九章综合练习题参考答案.doc
- 文档编号:606302
- 上传时间:2023-04-29
- 格式:DOC
- 页数:5
- 大小:48.50KB
第九章综合练习题参考答案.doc
《第九章综合练习题参考答案.doc》由会员分享,可在线阅读,更多相关《第九章综合练习题参考答案.doc(5页珍藏版)》请在冰点文库上搜索。
第九章综合练习题
请提交本文档!
姓名学号
一、选择题(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< 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(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第九 综合 练习题 参考答案