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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

罗玉萍实验报告三12147.docx

1、罗玉萍实验报告三12147池州学院数学计算机科学系实验报告专业:计算机科学与技术 班级: 12级计本 实验课程: 类和对象 姓名: 罗玉萍 学号: 120312147 实验室:_博采北101 实验时间: 2013/4/26 指导教师签字: 彭秀芳 成绩: 实验三 类和对象一、实验目的与要求1. 学习类、成员函数、对象的定义方法。2. 学习使用构造函数和析构函数。3. 学习使用静态成员、内联成员函数。4. 掌握this指针的使用方法。5. 掌握对象成员的使用方法。6. 掌握多文件结构的程序设计方法。7. 进一步熟悉VC+ 6.0的编译连接过程,掌握VC+ 6.0的调试方法。二、实验环境PC机、X

2、P操作系统、Visual C+ 6.0三、实验内容1. 阅读程序,预测功能,再上机编辑、运行该程序,以验证自己的预测。(1)理解拷贝构造函数的目的和调用。在三种情况下,系统自动调用拷贝构造函数第一种情况:当用类的一个对象去初始化该类的另一个对象时;第二种情况:如果函数的形参是类的对象,调用函数时,进行形参和实参结合时;第三种情况:如果函数的返回值是类的对象,函数执行完成返回调用者时。以下程序都是定义一个屏幕上的点类,该类具有x,y坐标属性。【程序1】#includeusing namespace std;class Point public:Point(int xx = 0, int yy =

3、 0)X = xx; Y = yy;cout调用构造函数n;Point(Point &p);int GetX() return X; int GetY() return Y; private: int X,Y;Point:Point(Point &p) X=p.X; Y=p.Y; cout调用拷贝构造函数n;void main() Point A(3,4); /a行 Point B(A); /b行 coutB.GetX()n;思考:(a)将b行改写为Point B = A; 程序输出结果会有变化吗? (b)将b行改写为Point B; B = A; 程序输出结果会有变化吗?【程序2】#incl

4、udeusing namespace std;class Point public: Point(int xx = 0,int yy = 0) X = xx; Y = yy; cout调用构造函数n; Point(Point &p); int GetX() return X; int GetY() return Y;private: int X,Y;Point:Point(Point &p) X = p.X; Y = p.Y; cout调用拷贝构造函数n;void fun1(Point p) coutp.GetX()n;void main() Point A(4,5); /a行 Point B

5、(A); /b行 coutB.GetX()n; fun1(B); /调用拷贝构造函数,实现形参和实参结合【程序3】#includeusing namespace std;class Point public: Point(int xx=0,int yy=0) X=xx;Y=yy; cout调用构造函数n; Point(Point &p); int GetX() return X; int GetY() return Y;private: int X,Y;Point:Point(Point &p) X=p.X; Y=p.Y; cout调用拷贝构造函数n;Point fun2() Point Te

6、mp(10,20); /调用构造函数 return Temp; void main()Point A(4,5); /a行Point B(A); /b行coutB.GetX()n;B=fun2();coutB.GetX()n; (2) 创建一个雇员类,该类中数据成员有姓名、家庭住址和邮政编码等,其功能有修改姓名、显示数据信息,要求其功能函数的原型放在类定义体中。#includeusing namespace std;class Employeepublic: Employee(char *pName=,char *pAddress=,char *pPostalcode=) name = new

7、char(strlen(pName)+1); strcpy(name,pName); address = new char(strlen(pAddress)+1); strcpy(address,pAddress); strcpy(postalcode,pPostalcode); void modifyName(char *pName) strcpy(name,pName); void modifyAddress(char *pAddress) strcpy(address,pAddress); void modifyPostalcode(char *pPostalcode) strcpy(p

8、ostalcode,pPostalcode); void display() cout姓名:namet 地址:addresst 邮编:postalcodeendl; private: char *name; char *address; char postalcode7;int main() Employee em3=Employee(李琳,张家口,075000), Employee(张强,北京,100011), Employee(王明,天津,300232); for(int i=0;i3;i+) emi.display(); em1.modifyName(张晓强); cout张强改名为张晓强

9、,第二个雇员的信息为:endl; em1.display(); return 0;思考:为什么将姓名、家庭住址设计为指针类型?邮政编码设计为数组类型?2. 编写程序建立一个矩阵类Array,存储一个的矩阵并能在矩阵中查找数据。要求如下:(a)私有数据成员int px44:存储一个矩阵的值。int n: 矩阵的行数。(b)公有数据成员int x:存储根据查找要求在矩阵中要找到的某数。int im,jm:存储该数所在的行、列值。(c) 公有成员函数构造函数:初始化n的值为,x、im、jm为。void input(int a4):将一个矩阵赋给该对象中的数组。void find():在该对象存储的矩

10、阵中查找值最小的数,保存该数及该数所在的行、列值到x,im,jm中。void print():按行输出矩阵的值(d)编写一个程序测试该类,使用以下测试数据,输出矩阵的值,查找值最小的数并输出x、im、jm的值。3. 熟悉多文件程序(1)在实际程序设计中,一个源程序按照结构可以划分为3个文件:类声明文件(*.h文件)、类实现文件(*.cpp )和类的使用文件(*.cpp,主函数文件)。 类声明文件(*.h文件): 将类的声明部分放在类声明文件(头文件)中,这就形成了类的public接口,向用户提供调用类成员函数所需的函数原型。 类实现文件(*.cpp ): 将类成员函数的定义放在类实现文件中,这

11、就形成了类的实现方法。 类的使用文件(*.cpp,主函数文件): 将类的使用部分(通常是主程序)放在类使用文件中, 这样可以清晰地表示出本程序所要完成的工作。 (2)尝试完成一个C+多文件程序的开发过程。先依据之前学习的内容创建一个新的空工程,然后依次在该工程中添加下列文件:/文件1 student.h (类的声明部分)#includeusing namespace std;class Studentpublic: /类的外部接口 Student(char *name1,char *stu_no1,float score1); /声明构造函数 Student(); /声明析构函数 void m

12、odify(float score1); /声明数据修改函数 void show(); /声明数据输出函数private: char *name; /学生姓名 char *stu_no; /学生学号 float score; /学生成绩;/文件2 student.cpp (类的实现部分)#include student.h /包含类的声明文件Student:Student(char *name1,char *stu_no1,float score1) name=new charstrlen(name1)+1; /构造函数的实现 strcpy(name,name1); stu_no=new ch

13、arstrlen(stu_no1)+1; strcpy(stu_no,stu_no1); score=score1; Student:Student() /析构函数的实现 delete name; delete stu_no; void Student:modify(float score1)/数据修改函数的实现 score=score1; void Student:show() /数据输出函数的实现 coutname: nameendl; coutstu_no: stu_noendl; coutscore: scoreendl; /文件3 studentmain.cpp (类的使用部分)#i

14、nclude student.h /包含类的声明文件int main() Student stu1(Liming,20080201,90); /定义类Student的对象stu1,调用stu1的构造函数,初始化对象stu1 stu1.show(); /调用stu1的成员函数show,显示stu1的数据 stu1.modify(88); /调用stu1的成员函数modify,修改stu1的数据 stu1.show(); /调用stu1的成员函数show,显示stu1修改后的数据 return 0;四、实验步骤1. 【程序1】#includeusing namespace std;class Po

15、int public:Point(int xx = 0, int yy = 0)X = xx; Y = yy;cout调用构造函数n;Point(Point &p);int GetX() return X; int GetY() return Y; private: int X,Y;Point:Point(Point &p) X=p.X; Y=p.Y; cout调用拷贝构造函数n;void main() Point A(3,4); /a行 Point B(A); /b行 coutB.GetX()n;(a) #includeusing namespace std;class Point publ

16、ic:Point(int xx = 0, int yy = 0)X = xx; Y = yy;cout调用构造函数n;Point(Point &p);int GetX() return X; int GetY() return Y; private: int X,Y;Point:Point(Point &p) X=p.X; Y=p.Y; cout调用拷贝构造函数n;void main() Point A(3,4); /a行 Point B=A; /b行 coutB.GetX()n;(b) #includeusing namespace std;class Point public:Point(

17、int xx = 0, int yy = 0)X = xx; Y = yy;cout调用构造函数n;Point(Point &p);int GetX() return X; int GetY() return Y; private: int X,Y;Point:Point(Point &p) X=p.X; Y=p.Y; cout调用拷贝构造函数n;void main() Point A(3,4); /a行 Point B; B=A; /b行 coutB.GetX()n;【程序2】#includeusing namespace std;class Point public: Point(int

18、xx = 0,int yy = 0) X = xx; Y = yy; cout调用构造函数n; Point(Point &p); int GetX() return X; int GetY() return Y;private: int X,Y;Point:Point(Point &p) X = p.X; Y = p.Y; cout调用拷贝构造函数n;void fun1(Point p) coutp.GetX()n;void main() Point A(4,5); /a行 Point B(A); /b行 coutB.GetX()n; fun1(B); /调用拷贝构造函数,实现形参和实参结合【

19、程序3】#includeusing namespace std;class Point public: Point(int xx=0,int yy=0) X=xx;Y=yy; cout调用构造函数n; Point(Point &p); int GetX() return X; int GetY() return Y;private: int X,Y;Point:Point(Point &p) X=p.X; Y=p.Y; cout调用拷贝构造函数n;Point fun2() Point Temp(10,20); /调用构造函数 return Temp; void main()Point A(4,

20、5); /a行Point B(A); /b行coutB.GetX()n;B=fun2();coutB.GetX()n;#includeusing namespace std;class Employeepublic: Employee(char *pName=,char *pAddress=,char *pPostalcode=) name = new char(strlen(pName)+1); strcpy(name,pName); address = new char(strlen(pAddress)+1); strcpy(address,pAddress); strcpy(postal

21、code,pPostalcode); void modifyName(char *pName) strcpy(name,pName); void modifyAddress(char *pAddress) strcpy(address,pAddress); void modifyPostalcode(char *pPostalcode) strcpy(postalcode,pPostalcode); void display() cout姓名:namet 地址:addresst 邮编:postalcodeendl; private: char *name; char *address; cha

22、r postalcode7;int main() Employee em3=Employee(李琳,张家口,075000), Employee(张强,北京,100011), Employee(王明,天津,300232); for(int i=0;i3;i+) emi.display(); em1.modifyName(张晓强); cout张强改名为张晓强,第二个雇员的信息为:endl; em1.display(); return 0;2#include#includeusing namespace std;class Arraypublic: int x; /存储根据查找要求在矩阵中要找到的某

23、数 int im,jm; /存储该数所在的行、列值 Array(); void input(int a4); /将一个矩阵赋给该对象中的数组 void find(); /在该对象存储的矩阵中查找值最小的数 void print(); private: int px44; /存储一个矩阵的值。 int n; /矩阵的行数arr;Array:Array() x=0; n=4; im=0; jm=0; void Array:input(int a4) for(int i=0;i4;i+) for(int j=0;j4;j+) pxij=aij; void Array:print() cout矩阵信息

24、为:endl; for(int i=0;i4;i+) for(int j=0;j4;j+) coutsetw(3)pxij; coutendl; coutendl; cout其中最小的数为:xendl; cout该数所在行数为:imendl 该数所在列数为:jmendl;void Array:find() x=px00; for(int i=0;i4;i+) for(int j=0;j4;j+) if(pxijx) x=pxij; im=i+1; jm=j+1; void main() int a44; cout请输入(4*4)矩阵信息:endl; for(int i=0;i4;i+) for(int j=0;jaij; arr.input(a); arr.find(); arr.print();五、实验结果1. 【程序1】(a)程序结果不会有变化(b)程序结果会发生变化【程序2】【程序3】(2)答:姓名和地址设为指针类型是因为指针传递时双向的,使得调用的函数也能使内容改变。邮政编码设为数组类型是因为邮政编码的第一个数可能是0,这样就能避免0不被显示出来。2.六、实验心得预测时,出现错误,与调试的结果不同。找出自己哪里出错了。在编写4*4的矩阵时,程序出现了很多问题,输出方法编写也出现错误,说明这方面还不太熟,要看书,多多练习。

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

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