欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    实验51参考答案.docx

    • 资源ID:27158074       资源大小:19.16KB        全文页数:21页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实验51参考答案.docx

    1、实验51 参考答案实验5(1) 类的组合参考答案一、实验目的与实验要求(1)理解类组合的概念与作用。(2)掌握对象成员的定义方法,理解对象成员的构造与析构方法。(3)理解组合后类的构造函数与析构函数的调用次序。(4)掌握对象成员中私有成员和保护成员的访问方法。二、实验内容题目1:对象成员的定义、构造与访问。定义三个类Member1、Member2和New。Member2中包含有Member1类型的成员,New中包含有Member1与Member2类型的成员。程序的具体要求如下。 在Member1类中,它含有一个int型私有数据成员x以及三个公有成员函数。三个成员函数分别为构造函数、析构函数与显

    2、示函数show( )。show( )函数的作用是输出x的值。 在Member2类中,它含有三个私有数据成员,分别是Member1型的对象obj1、obj2与int型的数据y。此外,它还含有三个公有成员函数,分别是构造函数、析构函数与显示函数show( )。show( )函数的作用是输出y的值。 在New类中,它含有三个私有数据成员,分别是Member1型的对象m1、Member2型的对象m2与int型的数据z。此外,它还含有三个公有成员函数,分别是构造函数、析构函数与显示函数show( )。show( )函数的作用是输出z的值。 main( )函数中定义一个New型的对象,并调用show( )

    3、函数。程序为:#includeusing namespace std;class Member1public: Member1(int a) x = a; cout constructing Member1 x endl; Member1( ) cout donstructing Member1n; void show( ) cout Member1 x = x endl; private: int x;class Member2public: Member2( int a,int b,int c ):obj1(a),obj2(b) y = c; cout constructing Membe

    4、r2 y endl; Member2( ) cout donstructing Member2n; void show( ) cout Member2 y = y endl; private: Member1 obj1, obj2; int y;class Newpublic: New( int a,int b,int c,int d,int e): m1(a),m2(b,c,d) z = e; cout constructing New z endl; New( ) cout donstructing Newn; void show( ) cout New z = z endl; priva

    5、te: Member1 m1; Member2 m2; int z;int main( ) New ex(1,2,3,4,5); ex.show( ); return 0;题目2:类组合的应用。编写一个程序,对一批学生的资料进行处理。程序的具体要求如下。 编写日期类Date,它含有三个私有int型数据成员year、month、day,分别表示年、月、日。此外,它还含有五个公有成员函数,分别是构造函数、显示函数Show( )、取值函数GetYear( )、GetMonth( )和GetDay( )。Show( )的功能是输出当前对象的日期,GetYear( )、GetMonth( )、GetDa

    6、y( )的作用分别是返回year、month和day的值。 编写学生类Student,它含有三个私有数据成员,分别是字符串型变量name、int型变量score与Date型变量birthday,分别表示学生的姓名、成绩与出生日期。此外,它还含有五个公有成员函数,分别是构造函数、显示函数Show( )、取值函数GetName( )、GetScore( )和GetDate( )。Show( )的功能是输出当前对象的所有信息,GetName( )、GetScore( )、GetDate( ) 的作用分别是返回name的首地址、score的值以及birthday的值。 编写函数CompareDate。

    7、它的原型如下,它的作用是比较日期d1和d2的前后。如果d1在d2前,返回-1,如果d1在d2后,返回1,如果d1和d2是同一天,返回0。int CompareDate( Date d1, Date d2 ); 编写函数SortByName。它的原型如下,它的作用是对st数组的前num个数据按姓名进行排序。void SortByName( Student * st , int num ); 编写函数SortByScore。它的原型如下,它的作用是对st数组的前num个数据按成绩进行排序。void SortByScore( Student *st , int num ); 编写函数SortByBi

    8、rthday。它的原型如下,它的作用是对st数组的前num个数据按出生日期进行排序。void SortByBirthday( Student * st, int num ); 编写函数PrintStudent。它的原型如下,它的作用是输出st数组的前num项。void PrintStudent( Student *st , int num ); 编写主函数main( ),在main( )中定义对象数组st,并调用上述函数进行测试。st数组使用下列数据进行初始化。Jack, 99, 1990, 2, 5Mike, 62, 1989, 12, 25Tom, 88, 1990, 3, 14Kate,

    9、 74, 1989, 10, 15Rowen, 92, 1990, 5, 22程序如下:#includeusing namespace std;class Datepublic: Date( int y = 2000 , int m = 1 , int d = 1 ) year = y; month = m; day = d; void Show( ) cout year - month - day endl; int GetYear( ) return year; int GetMonth( ) return month; int GetDay( ) return day; private:

    10、 int year; int month; int day;class Studentpublic: Student( int y=0,int m=0,int d=0,int s=0,char *p= ): birthday(y,m,d) strcpy( name, p ); score = s; void Show( ) cout name score ; birthday.Show(); char * GetName( ) return name; int GetScore( ) return score; Date GetDate( ) return birthday; private:

    11、 char name20; int score; Date birthday;int CompareDate( Date d1, Date d2 );void SortByName( Student *, int num );void SortByScore( Student *, int num );void SortByBirthday( Student *, int num );void PrintStudent( Student *, int num );int main( )Student st5 = Student(1990,2,5,99,Jack),Student(1989,12

    12、,25,62,Mike), Student(1990,3,14,88,Tom),Student(1989,10,15,74,Kate),Student(1990,5,22,92,Rowen); PrintStudent( st,5); coutendl; SortByName(st,5); PrintStudent(st,5); coutendl; SortByScore(st,5); PrintStudent(st,5 ); coutendl; SortByBirthday(st,5); PrintStudent(st,5); return 0;int CompareDate( Date d

    13、1, Date d2 ) /int t; if (d1.GetYear()d2.GetYear() return-1; else if(d1.GetYear()=d2.GetYear() if(d1.GetMonth()d2.GetMonth() return -1; else if (d1.GetMonth()=d2.GetMonth() if(d1.GetDay()d2.GetDay() return -1; else if (d1.GetDay()=d2.GetDay() return 0; else return 1; else return 1; else return 1;void

    14、 SortByName( Student *st, int num ) Student t; int k; for(int i=0;inum;i+) k=i; for(int j=i+1;jstj.GetName() if(strcmp(stk.GetName(),stj.GetName() )0) k=j; t=stk; stk=sti; sti=t; void SortByScore( Student *st, int num ) Student t; int k; for(int i=0;inum;i+) k=i; for(int j=i+1;jnum;j+) if(stk.GetSco

    15、re()stj.GetScore() k=j; t=stk; stk=sti; sti=t; void SortByBirthday( Student *st, int num ) Student t; int k; for(int i=0;inum;i+) k=i; for(int j=i+1;jnum;j+) if(CompareDate(stk.GetDate(),stj.GetDate()=1) k=j; t=stk; stk=sti; sti=t; void PrintStudent( Student *st, int num ) for (int i=0;inum;i+) sti.

    16、Show();运行结果为:Jack 99 1990-2-5Mike 62 1989-12-25Tom 88 1990-3-14Kate 74 1989-10-15Rowen 92 1990-5-22Jack 99 1990-2-5Kate 74 1989-10-15Mike 62 1989-12-25Rowen 92 1990-5-22Tom 88 1990-3-14Jack 99 1990-2-5Rowen 92 1990-5-22Tom 88 1990-3-14Kate 74 1989-10-15Mike 62 1989-12-25Kate 74 1989-10-15Mike 62 198

    17、9-12-25Jack 99 1990-2-5Tom 88 1990-3-14Rowen 92 1990-5-22Press any key to continue三、实验指导题目1指导: 程序的主要代码如下,在横线上补充相应的语句。#includeusing namespace std;class Member1public: Member1(int a) x = a; cout constructing Member1 x endl; Member1( ) cout donstructing Member1n; void show( ) cout Member1 x = x endl; p

    18、rivate: int x;class Member2public: Member2( (1) ): (2) y = c; cout constructing Member2 y endl; Member2( ) cout donstructing Member2n; void show( ) cout Member2 y = y endl; private: Member1 obj1, obj2; int y;class Newpublic: New( (3) ): (4) z = e; cout constructing New z endl; New( ) cout donstructi

    19、ng Newn; void show( ) cout New z = z endl; private: Member1 m1; Member2 m2; int z;int main( ) New ex( (5) ); ex.show( ); return 0; 观察程序的运行结果,分析构造函数与析构函数的调用次序。答:运行结果如下:constructing Member1 1constructing Member1 2constructing Member1 3constructing Member2 4constructing New 5New z = 5donstructing Newdo

    20、nstructing Member2donstructing Member1donstructing Member1donstructing Member1Press any key to continue构造函数的调用次序是:首先调用对象成员的构造函数,多个对象成员时按定义顺序执行其对应的构造函数;然后调用对象自身的构造函数。析构时其调用顺序与构造函数顺序相反。New ex(1,2,3,4,5);时,构造函数的调用调用顺序为:m1的构造函数Member1 1m2的构造函数,首先调用obj1的构造函数Member1 1,然后调用obj2的构造函数Member1,最后调用m2 自己的构造函数Me

    21、mber2调用ex自身的构造函数 New析构函数调用的过程相反。 改变Member2构造函数初始化表中各项的次序,并再次运行程序,观察结果并分析构造函数与析构函数的调用次序。答:因为构造函数的调用与初始化表中各项的次序无关,如果参数对应的对象成员不变,结果也不变。 在Member2构造函数中添加语句obj1.x = 50是否可行?分析其原因。答:不可行。原因:输出窗口区显示:error C2248: x : cannot access private member declared in class Member1因为x在Member1 中是私有成员,在Member2类中不能直接访问Membe

    22、r1中的私有成员。 在main( )中添加下列语句是否可行?分析其原因。 ex.m1.show( ); ex.m2.show( );答:不可行。原因:输出窗口显示:m1 : cannot access private member declared in class New m2 : cannot access private member declared in class Newm1,m2在New类中属于私有的对象成员,在类外的main函数中不可直接访问。 在Member2与New中的show( )函数添加语句,使得main( )中ex.show( );能输出所有x、y和z的值。答:Mem

    23、ber2中的show( )函数修改为如下: void show( ) coutobj1. ; obj1.show(); coutobj2. ; obj2.show(); cout Member2 y = y endl; New中的show( )函数修改为如下: void show( ) coutm1. ; m1.show(); coutm2. endl; m2.show(); cout New z = z endl; 运行结果为:constructing Member1 1constructing Member1 2constructing Member1 3constructing Memb

    24、er2 4constructing New 5m1. Member1 x = 1m2.obj1. Member1 x = 2obj2. Member1 x = 3Member2 y = 4New z = 5donstructing Newdonstructing Member2donstructing Member1donstructing Member1donstructing Member1Press any key to continue题目2指导: Date类、Student类与main( )的主要代码如下,在横线上补充相应的语句。class Datepublic: Date( int

    25、 y = 2000 , int m = 1 , int d = 1 ) year = y; month = m; day = d; void Show( ) cout year - month - day endl; int GetYear( ) return year; int GetMonth( ) return month; int GetDay( ) return day; private: int year; int month; int day;class Studentpublic: Student( (1) ): (2) strcpy( name, p ); score = s

    26、; void Show( ) cout name score ; (3) ; char * GetName( ) return name; int GetScore( ) return score; Date GetDate( ) return (4) ; private: char name20; int score; Date birthday;int main( ) Student st5 = (5) ; PrintStudent( (6) ); SortByName( (7) ); PrintStudent( (8) ); SortByScore( (9) ); PrintStudent( (10) ); SortByBirthday( (11) ); PrintStudent( (12) ); return 0; 声明、实现下列函数,并运行程序进行测试。int CompareDate( Date d1, Date d2 );void SortB


    注意事项

    本文(实验51参考答案.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

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

    收起
    展开