版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验4类中数据的共享与保护实验4类中数据的共享与保护一、实验目的与实验要求掌握友元的定义和应用。掌握对象数组的定义、初始化方法及应用。掌握指针和引用作为函数参数的应用。掌握在类内定义静态数据成员以实现共享的基本方法,并根据需要定义相应的静态成员函数专门操作静态数据成员。掌握类中常数据成员的定义及初始化方法,正确使用常数据成员。理解常成员函数的意义以及常对象的意义,在程序中正确定义常对象,并正确调用相应的成员函数。二、实验内容1.编写一个程序,定义一个Circi类,按下述内容要求定义相关的数据成员及成员函数,最后在主函数中输出各圆的半径及对应面积,并一次性输出平均面积。Circi类中定义4个数据
2、成员:常数据成员pi代表圆周率,静态数据成员counti于统计圆对象的个数,普通的double型数据成员r代表圆的半径,普通的double型数据成员area代表圆的面积,所有数据成员均定义为私有属性。再定义相关的成员函数,用于求单个圆的面积、输出圆的半径及面积、获取静态数据成员的值。主函数中以一维对象数组定义若干个圆类的对象,调用相应的函数,求面积,并输出每个圆的半径及对应的面积,并且输出一次圆的个数。在Circi类中增加一个友元函数的声明,用来求所有圆面积的平均值,并实现该函数的代码,主函数中增加调用此函数的语句,输出所有圆面积的平均值。#includeusingnamespacestd;c
3、lassCircleconstdoublePI;staticintcount;doubleRadius;public:Circle(doubler):PI(3.14)/Radius=newsizeof(r);Radius=r;count+;doubleArea();doubleCircumference();intGetmount();Circle():PI(3.14);doubleCircle:Area()returnPI*Radius*Radius;doubleCircle:Circumference()returnRadius;intCircle:Getmount()returncoun
4、t;intCircle:count=0;intmain()/Circlec1(3),c2(4);/coutareaofc1=c1.Area(),circumferenceofc1=c1.Circumference()c1.Getmount()endl;/coutareaofc2=c2.Area(),circumferenceofc2=c2.Circumference()c2.Getmount()endl;doubler;Circlec2=Circle(3),Circle(4);/intcount=0;for(inti=0;ir;Circle(r);/ci.Circle:Area();/Circ
5、leArea();/CiecleCircumference();/Circlec1;coutareaofc=要求:类中的数据成员连同访问属性均不可以修改。/错误程序源代码如下:#includeusingnamespacestd;classStudentprivate:charname20;staticinttotal;/用来统计学生总人数public:Student()total+;Student()Student(char*p=Wang);staticintGetTotal();staticintStudent:total=0;Student:Student(char*p=Wang)strc
6、py(name,p);total+;staticintStudent:GetTotal()returntotal;intmain()coutThenumberofallstudents:Student*p=newStudent(Li);coutThenumberofallstudents:GetTotal()deletep;coutThenumberofallstudents:Students2;coutThenumberofallstudents:coutThenumberofallstudents:return0;#includeusingnamespacestd;classStudent
7、private:charname20;staticinttotal;public:Student()total+;Student()total-;Student(char*p=Wang);staticintGetTotal();intStudent:total=0;Student:Student(char*p)strcpy(name,p);total+;intStudent:GetTotal()returntotal;intmain()coutThenumberofallstudents:coutThenumberofallstudents:GetTotal()deletep;coutThen
8、umberofallstudents:GetTotal()/*Student:total*/Students2;coutThenumberofallstudents:coutThenumberofallstudents:return0;3.设计一个Score类,该结构有两个数据成员,分别为整型的home_team(主队)和opponent(客队)。用Score类定义一个含有5个元素的game数组,用于记录一个球队全部5场比赛的每场庄分。定义相关的构造函数,初始比分均为0:0,Set()函数用于修改每场比分,GetHometeam()函数用于提取主队的比分,GetOpponent(函数用于提取客
9、队的比分。Display()用于显示比分情况,输出形如55:66。定义对象数组game,并初始化对象数组,以98:67,105:103,88:96的比分给game数组的前三元素赋初值。调用Set()函数为对象数组的其他元素赋值。设计一个查询功能,让用户输入场次,查询该场次比分情况,以输Z0为结束。定义普通函数result(Score*p,Score&e),Score类指针用来传递对象数组的首地址,Score类对象e为一引用,用来存储比赛的总比分成绩。在result()函数中,通过统计每场比赛的比分情况,得出最后总成绩,在主函数中根据end对象中比赛结果,输出最后的胜利者。完成上述程序并回答下列
10、问题:如果将函数result(Score*p,Score&e)改为result(Score*p,Scoree),修改主函数的调用语句,观察程序运行结果,说明原因。如果将函数result(Score*p,Score&e)改为result(Score*p,Score*e),修改主函数的调用语句,观察程序运行结果,说明原因。#includeusingnamespacestd;classScoreinthometeam;intopponent;public:Score()hometeam=0;opponent=0;Score(inta,intb)hometeam=a;opponent=b;voidSe
11、t(inta,intb)hometeam=a;opponent=b;intGetHometeam()returnhometeam;intGetOpponent()returnopponent;intDisplay()returnhometeam;returnopponent;intresult(Score*p,Score&e)for(inti=0;ipi.GetOpponent()e.hometeam+;elsee.opponent-;intmain()inti;Scoregame5=Score(98,67),Score(105,103),Score(88,96),Score(),Score(
12、);ScoreF1=Score(0,0);coutpleaseinputthenumberi;while(i0)coutreturn0;cout最终冠军是F0.GetOpponent()cout冠军是主队elsecout冠军是客队4阅读课本P893.6“程序实例-学生信息管理系统”程序,按照课本的运行步骤运行一遍。然后修改该程序,使得在主菜单中选择输入2时,显示如下的的二级菜单:*1.按照姓名查询*2.按照年龄查询*3.按照专业查询*4.按照学号查询*0.返回主菜单*编写对应的二级菜单程序,实现按照不同的查询方式查询学生信息,最后设计运行步骤验证修改后程序是否达到查询学生信息的目的。#incl
13、ude#includeexample3_26_student.husingnamespacestd;constintN=10;voidmenu();voidmenu2();voidOutputStu(Student*array);voidInputStu(Student*array);intSearchStu(Student*array,char*na);intSearchStu2(Student*array,char*na2);intSearchStu3(Student*array,char*number1);intcount=0;intmain()StudentarrayN;intchoi
14、ce;domenu();coutchoice;if(choice=0&choice=3)switch(choice)case1:InputStu(array);break;case2:domenu2();/coutInputthenamesearchedcoutchoice;if(choice=0&choicena;inti;i=SearchStu(array,na);if(i=N)coutt;arrayt.Display();case3:coutInputthespecialityna2;intQ;Q=SearchStu2(array,na2);if(Q=N)cout查无此专业!n;else
15、arrayi.Display();break;case4:coutInputthenumbernumber120;intQ;Q=SearchStu3(array,number1);if(Q=N)coutna;/inti;/i=SearchStu(array,na);/if(i=N)/cout喳无此人!n;/else/arrayi.Display();/break;icase1case3:OutputStu(array);break;default:break;while(choice);return0;voidmenu()coutv*i录入自*coutv*2查询彳信自*coutv*3汶卩i览自
16、*coutv*0退出*voidmenu2()iicoutvv*1按照姓名查询*coutvv*2按照年龄查询*coutvv*3按照专业查询*icoutvv*4照学号杳询*coutvv*0返回主菜单*“iivoidOutputStu(Student*array)输出对象数组元素coutvv学生总人数=for(inti=0;iarrayi.Display();intSearchStu(Student*array,char*na)/按/姓名杳询inti,j=N;for(i=0;iif(strcmp(arrayi.GetName(),na)=0)j=i;returnj;intSearchStu2(Student*array,char*na2)inti,j=N;for(i=0;iif(st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省镇江市丹徒区高中政治 第九课 唯物辩证法的实质与核心教案 新人教版必修4
- 二年级品德与生活上册 诚实故事会教案2 北师大版
- 2024秋八年级物理上册 第4章 光的折射 透镜 第一节 光的折射教案2(新版)苏科版
- 2024年秋九年级历史上册 第2单元 古代欧洲文明 第4课 希腊城邦和亚历山大帝国教案 新人教版
- 2024-2025学年高中英语 Module 5 Newspapers and Magazines教案1 外研版必修2
- 2024年五年级语文上册 第四单元 13 少年中国说(节选)配套教案 新人教版
- 2023六年级数学下册 第4单元 比例 2正比例和反比例练习课(正比例和反比例)教案 新人教版
- 换热站管理制度
- 自建房屋外包合同(2篇)
- 设计师求职简历幻灯片模板
- 海水淡化处理方案
- 初中数学基于大单元的作业设计
- 小学一年级下册数学期末考试质量分析及试卷分析
- 原材料情况说明范本
- 《激发潜能超越自我》主题班会课件
- 机械制造课程设计-《机械制造工艺学》课程设计
- 相邻企业间安全管理协议
- 装饰装修工程售后服务具体措施
- 乙炔发生器、电石库安全检查表
- 克拉申监控理论述评
- ICH技术指导原则概述
评论
0/150
提交评论