ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:18.53KB ,
资源ID:29952097      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29952097.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(福建农林大学计算机与信息学院实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

福建农林大学计算机与信息学院实验报告.docx

1、福建农林大学计算机与信息学院实验报告福建农林大学计算机与信息学院实验报告系(教研室):计算机系专业:计算机科学与技术年级:08级实验课程:面向对象程序设计姓名:郑彬学号:实验室号:_513_计算机号:2实验时间:9月29日、10月13日指导教师签字:成绩:实验二类与对象(验证性)一、实验目的和要求1掌握类、类的数据成员、类的成员函数的定义方式,理解类成员的访问控制方式。2掌握对象的定义和操作对象的方法。3掌握构造函数和析构函数的概念,掌握几种特殊构造函数。4理解对象数组、对象指针的概念并能正确应用。5理解类的组合关系(对象成员)。6理解this、const、new/delete等关键字的用法并

2、能够正确应用。7掌握静态成员的基本使用方法。8掌握友元的使用方法,进一步理解其概念和作用。二、实验内容和原理1.下面程序sy3_1.cpp中用ERROR标明的语句有错,在不删除和增加代码行的情况下,改正错误语句,使其正确与运行。/sy3_1.cpp#includeusingnamespacestd;classAapublic:Aa(inti=0)a=i;coutConstructoraendl;Aa()coutDestructoraendl;voidprint()coutaendl;private:inta;intmain()Aaa1(1),a2(2);a1.print();couta2.ae

3、ndl;/ERRORreturn0;2.调试下列程序。/sy3_2.cpp#include usingnamespacestd;classTPointpublic:TPoint(intx,inty)X=x;Y=y;TPoint(TPoint&p);TPoint()coutDestructoriscalledn;intgetx()returnX;intgety()returnY;private:intX,Y;TPoint:TPoint(TPoint&p)X=p.X;Y=p.Y;coutCopy-initializentionConstructoriscalledn;intmain()TPoint

4、p1(4,9);TPointp2(p1);TPointp3=p2;coutp3=(p3.getx(),p3.gety()n;return0;在该程序中,将TPoint类的带有两个参数的构造函数进行修改,在函数体内增添下述语句:coutContructoriscalled.n(1) 写出程序的输出结果,并解释输出结果。(2) 按下列要求进行调试;在主函数体内,添加下列说明语句:Tpointp4,p5(2);调试程序会出现什么现象?为什么?如何解决?(提示:对已有的构造函数进行适当修改)结合运行结果分析如何使用不同的构造函数创建不同的对象。3.对教材中Li3_11.cpp的主函数做如下修改:(1)

5、将Heapclass*pa1,*pa2改为Heapclass*pa1,*pa2,*p3;(2)在语句pa=newheapclass;后增加语句pa3=newHeapclass(5);(3)将语句if(!pa1|!pa2)改为if(!pa1|!pa2|!pa3);(4)在语句deletepa2;后增加语句deletepa3;写出程序的输出结果,并解释输出结果。4请定义一个矩形类(Rectangle),私有数据成员为矩形的长度(len)和宽度(wid),无参构造函数置len和wid为0,有参构造函数置len和wid为对应形参的值,另外还包括求矩形周长,求矩形面积,取矩形长度和宽度,修改矩形长度和宽

6、度为对应形参的值,输出矩形尺寸等公有成员函数。要求输出矩形尺寸的格式为”length:长度,width:宽度”。(sy3_3.cpp)5调试下列程序,写出输出结果,并分析输出结果。/sy4_1.cpp#includeusingnamespacestd;classMypublic: My(intaa) A=aa; B-=aa; staticvoidfun(Mym);private: intA; staticintB;voidMy:fun(Mym) coutA=m.Aendl;coutB=m.Bendl;intMy:B=100;intmain() MyP(6),Q(8); My:fun(P); Q

7、.fun(Q); return0;6.分析并调试程序,完成下列问题。/sy4_2.cpp#include#includeusingnamespacestd;classMypublic: My(doublei=0)x=y=i; My(doublei,doublej)x=i;y=j; My(My&m)x=m.x;y=m.y; frienddoubledist(My&a,My&b);private: doublex,y;doubledist(My&a,My&b) doubledx=a.x-b.x; doubledy=a.y-b.y;returnsqrt(dx*dx+dy*dy);intmain()

8、Mym1,m2(15),m3(13,14); Mym4(m3); coutThedistancel:dist(m1,m3)endl;coutThedistance2:dist(m2,m3)endl; coutThedistance3:dist(m3,m4)endl; coutThedistance4:dist(m1,m2)endl;return0;(1) 指出所有的构造函数,它们在本程序中分别起什么作用?(2) 指出设置默认参数的构造函数。(3) 指出友元函数,将友元函数放到私有部分,观察结果是否有变化。(4) 写出输出结果,并分析输出结果。7.定义一个Student类,在该类的定义中包含一个

9、数据成员score(分数),两个静态数据成员total(总分)和学生人数count;成员函数scoretotalcount(floats)用于设置分数,求总分和累计学生人数;静态成员函数sun()用于返回总分;静态成员函数average()用于求平均值。在main函数中,输入某班同学的成绩,并调用上述函数求全班学生的总分和平均分(sy4_3)8.声明Book和Ruler两个类,二者都有weight属性,定义二者的一个友元函数totalWeight(),计算两者的重量和。(sy4_4.cpp)三、实验环境微机及VisualC+6.0。四、算法描述及实验步骤1.将couta2.aendl;改为a2

10、.print();然后进行调试运行。2.在该程序中,将TPoint类的带有两个参数的构造函数进行修改,在函数体内增添下述语句:cout”Contructoriscalled.n”(1) 写出程序的输出结果,并解释输出结果。(2)按下列要求进行调试;在主函数体内,添加下列说明语句:Tpointp4,p5(2);观察调试时出现的现象,解释原因并解决3.写出修改后的程序的结果,并解释输出结果修改后的程序:#includeusingnamespacestd;classHeapclasspublic: Heapclass(intx); Heapclass(); Heapclass();private:

11、inti;Heapclass:Heapclass(intx) i=x; coutContstructoriscalled.iendl;Heapclass:Heapclass()coutDefaultContstructoriscalled.endl;Heapclass:Heapclass()coutDefaultiscalled.endl;intmain() Heapclass*pa1,*pa2,*pa3; pa1=newHeapclass(4);pa2=newHeapclass; pa3=newHeapclass(5); if(!pa1|!pa2|!pa3) coutOutofMemory!

12、endl; return0; coutExitmainendl; deletepa1; deletepa2; deletepa3; return0;4#includeusingnamespacestd;classRectanglepublic:Rectangle()len=0;wid=0;Rectangle(doubleLen,doubleWid)len=Len;wid=Wid;doubleCircumference()return2*(len+wid);doubleArea()returnlen*wid;doublegetl()returnlen;doublegetw()returnwid;

13、voidcharge(doublea,doubleb)len=a;wid=b;print()coutlength:lenwidth:wid;private:intlen,wid;intmain()Rectanglep1;Rectanglep2(4.0,5.0);coutp1的矩形尺寸:;p1.print();coutp2的矩形尺寸:;p2.print();coutp2周长:p2.Circumference()endl;coutp2面积:p2.Area()endl;coutp2的长度:p2.getl()endl;coutp2的宽度:p2.getw()endl;p2.charge(5.0,6.0)

14、;cout修改后的矩形的尺寸:;p2.print();return0;5.调试程序所有sy4_1,写出输出结果,分析输出结果。6.分析调试sy4_2,回答sy4_2的问题。7.程序如下:/sy4_3#includeusingnamespacestd;classstudentpublic:voidscoretotalcount(floats); staticfloatsum();staticfloataverage();private: floatscore; staticfloattotal; staticintcount;floatstudent:total=0;intstudent:cou

15、nt=0;voidstudent:scoretotalcount(floats) score=s; total+=score; count+;floatstudent:sum()returntotal;floatstudent:average()returntotal/count;intmain() floats; intn;studenta10; coutn; cout输入学生成绩:; for(inti(0);is;ai.scoretotalcount(s); cout班级总分为:;coutstudent:sum()endl; cout班级平均分为:;coutstudent:average(

16、)endl; return0;8.程序如下:/sy4_4#includeusingnamespacestd;classRuler;classBookpublic: Book(inti=0)weight=i; friendfloattotalWeight(Book&m,Ruler&n);private:floatweight;classRulerpublic: Ruler(intj=0)weight=j; friendfloattotalWeight(Book&m,Ruler&n);private:floatweight;floattotalWeight(Book&m,Ruler&n)retur

17、nm.weight+n.weight;intmain()inti,j; couti; coutj; BookB(i); RulerR(j);couttotalweighttotalWeight(B,R)endl; return0;五、调试过程及实验结果1.应将couta2.aendl改为a2.print(),然后进行调试试验结果为:2.(1)在TPoint类的带有两个参数的构造函数中添加cout”Contructoriscalled.n”试验结果:(2)在主函数体内,添加Tpointp4,p5(2);调试过程:出错原因:因为在类中没有定义不带参数和带一个参数的构造函数解决方法:可以将带两个参数

18、的结构函数改为缺省的构造函数,即可以将TPoint(intx,inty)改为TPoint(intx=0,inty=0)输出结果:在运行的过程中TPointp1(4,9);TPointp4,p5(2);调用了构造函数,而TPointp2(p1);TPointp3=p2;使用了拷贝构造函数。3.实验结果:用3个指针*p1,*p2,*p3指向三个新创建的对象,并调用了带一个和不带构造参数的构造函数进行对对象进行初始化,故输出了前三个语句。实验结束后,调用了析构函数,产生了后三个语句。4.实验结果:调试过程:经检查charge(5.0,6.0);错误应将其改为p2.charge(5.0,6.0);5.

19、实验结果:创建对象P时,调用构造函数对其初始化得到,A6,BB-A=100-6=94,再创建对象Q时 ,调用构造函数对其初始化得到,A8,BB-A=94-8=86,最后调用了静态成员函数staticvoidfun(),且因为B是静态数据成员,故输出上面的结果。6.验结果:(1)构造函数My(doublei=0)用来对m1,m2进行初始化,My(doublei,doublej)对m3进行初始化,拷贝构造函数My(My&m)用来对m4进行初始化。(2)My(doublei=0)为带默认参数的构造函数。(3)dist()为友元函数,将其放到私有部分,编译仍是正确的的,因为友元函数声明时仍与普通函数一致的,所以编译时不会出错。7.调试过程:在类定义完时,未加分号。实验结果:8.调试过程:调试未出现错误。实验结果:六、总结(1)只有类中的函数才能访问类中的私有成员。(2)在对象创建时,先用构造函数对其进行初始化,在程序结束后用析构函数释放由构造函数分配的内存,而且析构函数的执行顺序与构造函数执行的顺序刚好相反。(3)一般对象:在对象的创建时进行初始化,可以用构造函数或者用拷贝构造函数进行初始化堆对象:用new进行分配空间,在调用构造函数进行初始化。(4)掌握了静态变量和静态函数的基本使用和友元函数的使用方法。

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

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