罗玉萍实验报告三12147Word文档下载推荐.docx

上传人:b****6 文档编号:19082173 上传时间:2023-01-03 格式:DOCX 页数:20 大小:94.97KB
下载 相关 举报
罗玉萍实验报告三12147Word文档下载推荐.docx_第1页
第1页 / 共20页
罗玉萍实验报告三12147Word文档下载推荐.docx_第2页
第2页 / 共20页
罗玉萍实验报告三12147Word文档下载推荐.docx_第3页
第3页 / 共20页
罗玉萍实验报告三12147Word文档下载推荐.docx_第4页
第4页 / 共20页
罗玉萍实验报告三12147Word文档下载推荐.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

罗玉萍实验报告三12147Word文档下载推荐.docx

《罗玉萍实验报告三12147Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《罗玉萍实验报告三12147Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。

罗玉萍实验报告三12147Word文档下载推荐.docx

第三种情况:

如果函数的返回值是类的对象,函数执行完成返回调用者时。

以下程序都是定义一个屏幕上的点类,该类具有x,y坐标属性。

【程序1】

#include<

iostream>

usingnamespacestd;

classPoint

{

public:

Point(intxx=0,intyy=0)

X=xx;

Y=yy;

cout<

<

"

调用构造函数\n"

;

}

Point(Point&

p);

intGetX(){returnX;

}

intGetY(){returnY;

private:

intX,Y;

};

Point:

:

p)

X=p.X;

Y=p.Y;

cout<

调用拷贝构造函数\n"

voidmain()

PointA(3,4);

//a行

PointB(A);

//b行

B.GetX()<

\n"

思考:

(a)将b行改写为PointB=A;

程序输出结果会有变化吗?

(b)将b行改写为PointB;

B=A;

【程序2】

Point(intxx=0,intyy=0)

{

X=xx;

cout<

Point(Point&

intGetX(){returnX;

intGetY(){returnY;

X=p.X;

Y=p.Y;

voidfun1(Pointp)

p.GetX()<

PointA(4,5);

fun1(B);

//调用拷贝构造函数,实现形参和实参结合

【程序3】

Point(intxx=0,intyy=0)

X=xx;

Y=yy;

Pointfun2()

PointTemp(10,20);

//调用构造函数

returnTemp;

PointA(4,5);

PointB(A);

B=fun2();

 

(2)创建一个雇员类,该类中数据成员有姓名、家庭住址和邮政编码等,其功能有修改姓名、显示数据信息,要求其功能函数的原型放在类定义体中。

classEmployee

Employee(char*pName="

char*pAddress="

char*pPostalcode="

name=newchar(strlen(pName)+1);

strcpy(name,pName);

address=newchar(strlen(pAddress)+1);

strcpy(address,pAddress);

strcpy(postalcode,pPostalcode);

voidmodifyName(char*pName)

strcpy(name,pName);

voidmodifyAddress(char*pAddress)

strcpy(address,pAddress);

voidmodifyPostalcode(char*pPostalcode)

strcpy(postalcode,pPostalcode);

voiddisplay()

name<

\t"

<

地址:

address<

邮编:

postalcode<

endl;

char*name;

char*address;

charpostalcode[7];

intmain()

Employeeem[3]={Employee("

李琳"

"

张家口"

075000"

),

Employee("

张强"

北京"

100011"

王明"

天津"

300232"

)};

for(inti=0;

i<

3;

i++)

em[i].display();

em[1].modifyName("

张晓强"

);

张强改名为张晓强,第二个雇员的信息为:

em[1].display();

return0;

思考:

为什么将姓名、家庭住址设计为指针类型?

邮政编码设计为数组类型?

2.编写程序

建立一个矩阵类Array,存储一个4*4的矩阵并能在矩阵中查找数据。

要求如下:

(a)私有数据成员

·

intpx[4][4]:

存储一个4*4矩阵的值。

intn:

矩阵的行数。

(b)公有数据成员

intx:

存储根据查找要求在矩阵中要找到的某数。

intim,jm:

存储该数所在的行、列值。

(c)公有成员函数

构造函数:

初始化n的值为4,x、im、jm为0。

voidinput(inta[][4]):

将一个矩阵赋给该对象中的数组。

voidfind():

在该对象存储的矩阵中查找值最小的数,保存该数及该数所在的行、列值到x,im,jm中。

voidprint():

按行输出矩阵的值

(d)编写一个程序测试该类,使用以下测试数据,输出矩阵的值,查找值最小的数并输出x、im、jm的值。

3.熟悉多文件程序

(1)在实际程序设计中,一个源程序按照结构可以划分为3个文件:

类声明文件(*.h文件)、类实现文件(*.cpp)和类的使用文件(*.cpp,主函数文件)。

*类声明文件(*.h文件):

将类的声明部分放在类声明文件(头文件)中,这就形成了类的public接口,向用户提供调用类成员函数所需的函数原型。

*类实现文件(*.cpp):

将类成员函数的定义放在类实现文件中,这就形成了类的实现方法。

*类的使用文件(*.cpp,主函数文件):

将类的使用部分(通常是主程序)放在类使用文件中,这样可以清晰地表示出本程序所要完成的工作。

(2)尝试完成一个C++多文件程序的开发过程。

先依据之前学习的内容创建一个新的空工程,然后依次在该工程中添加下列文件:

//文件1student.h(类的声明部分)

classStudent{

//类的外部接口

Student(char*name1,char*stu_no1,floatscore1);

//声明构造函数

~Student();

//声明析构函数

voidmodify(floatscore1);

//声明数据修改函数

voidshow();

//声明数据输出函数

//学生姓名

char*stu_no;

//学生学号

floatscore;

//学生成绩

//文件2student.cpp(类的实现部分)

#include"

student.h"

//包含类的声明文件

Student:

Student(char*name1,char*stu_no1,floatscore1){

name=newchar[strlen(name1)+1];

//构造函数的实现

strcpy(name,name1);

stu_no=newchar[strlen(stu_no1)+1];

strcpy(stu_no,stu_no1);

score=score1;

}

~Student()//析构函数的实现

{delete[]name;

delete[]stu_no;

}

voidStudent:

modify(floatscore1)//数据修改函数的实现

{score=score1;

show()//数据输出函数的实现

{cout<

name:

"

stu_no:

stu_no<

score:

score<

//文件3studentmain.cpp(类的使用部分)

{Studentstu1("

Liming"

20080201"

90);

//定义类Student的对象stu1,调用stu1的构造函数,初始化对象stu1

stu1.show();

//调用stu1的成员函数show,显示stu1的数据

stu1.modify(88);

//调用stu1的成员函数modify,修改stu1的数据

//调用stu1的成员函数show,显示stu1修改后的数据

四、实验步骤

1.【程序1】

(a)

#include<

PointB=A;

(b)

PointB;

B=A 

2

iomanip>

classArray

intx;

//存储根据查找要求在矩阵中要找到的某数

intim,jm;

//存储该数所在的行、列值

Array();

voidinput(inta[][4]);

//将一个矩阵赋给该对象中的数组

voidfind();

//在该对象存储的矩阵中查找值最小的数

voidprint();

intpx[4][4];

//存储一个4*4矩阵的值。

intn;

//矩阵的行数

}arr;

Array:

Array()

x=0;

n=4;

im=0;

jm=0;

voidArray:

input(inta[][4])

4;

{

for(intj=0;

j<

j++)

px[i][j]=a[i][j];

}

print()

矩阵信息为:

for(intj=0;

cout<

setw(3)<

px[i][j];

其中最小的数为:

x<

该数所在行数为:

im<

endl

<

该数所在列数为:

jm<

find()

x=px[0][0];

for(inti=0;

if(px[i][j]<

x)

{

x=px[i][j];

im=i+1;

jm=j+1;

}

inta[4][4];

请输入(4*4)矩阵信息:

cin>

>

a[i][j];

arr.input(a);

arr.find();

arr.print();

五、实验结果

(a)程序结果不会有变化

(b)程序结果会发生变化

(2)

答:

姓名和地址设为指针类型是因为指针传递时双向的,使得调用的函数也能使内容改变。

邮政编码设为数组类型是因为邮政编码的第一个数可能是0,这样就能避免0不被显示出来。

2.

六、实验心得

预测时,出现错误,与调试的结果不同。

找出自己哪里出错了。

在编写4*4的矩阵时,程序出现了很多问题,输出方法编写也出现错误,说明这方面还不太熟,要看书,多多练习。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 自我管理与提升

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

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