实验报告二Word格式文档下载.docx
- 文档编号:18730343
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:19
- 大小:154.43KB
实验报告二Word格式文档下载.docx
《实验报告二Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验报告二Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
李寰2016年4月21日
注:
要将实验项目、实验课程的成绩评定及课程考核办法明确告知学生,并报实验管理中心备案
【三、实验预习】
实验目的和要求:
1.设计一个新类,并对其进行验证。
2.要求掌握构造函数和析构函数,对象的创建,成员函数的调用。
3.初步掌握用类和对象编制基于对象的程序。
4.掌握对象数组、对象的指针及其使用方法
实验内容和原理或涉及的知识点(综合性实验):
1.某单位的职工工资包括基本工资Wage,岗位津贴Subsidy,房租Rent,水费WaterFee,电费ElecFee。
设计实现工资管理的类Salary,该类的形式如下:
classSalary
{public:
Salary(){初始化工资数据的各分项数据为0}
Salary(……){初始化工资数据的各分项数据}
voidsetXX(doublef){XX=f;
}
doublegetXX(){returnXX;
doubleRealSalary(){……}//计算实发工资
……
Private:
doubleWage,Subsidy,Rent,WaterFee,ElecFee;
};
其中,成员函数setXX()用于设置工资的各分项数据,成员函数getXX()用于获取工资的各分项数据,XX代表Wage、Subsidy等数据成员,如Wage对应的成员函数则为setWage()和getWage()。
Rent对应的成员函数则为setRent()和getRent()
实发工资=Wage+Subsidy-Rent-WaterFee-ElecFee
编程完善该类的设计,并在主函数中测试该类的各成员函数。
2.请编写一个三角形类的程序。
数据成员包括三角形的三边长a、b、c。
要求用成员函数实现以下功能:
(1)定义构造函数完成三角形的初始化;
(2)求三角形的周长;
(3)求三角形的面积;
(4)输出三角形信息。
(5)在主程序中创建3个三角形的对象,创建3个三角形对象时分别采用给出数据初始化的方式,声明对象然后再赋值的方式,使用已有对象快速复制的方式。
然后在主程序中分别调用各对象的各方法。
(6)在主程序中创建一个指向三角形对象的指针,通过指针分别显示出3个三角形的信息和面积。
3.下面是一个整型链表类intList的声明,请给出该类所有数据成员的类外定义。
在主程序中创建整型链表类的对象,验证整型链表类的各方法。
classintList
{protected:
structNode{
Node*next;
intdata;
};
Node*pFirst;
public:
intList();
//构造函数
~intList();
//析构函数
//向链表的第i个位置插入一个元素,插入成功返回true,失败返回false
boolInsert(inti,intelem);
//删除链表的第i个位置的元素,删除成功返回true,失败返回false
boolRemove(inti,int&
elem);
int*Find(intelem)const;
//查找值为elem的元素,返回指向该元素的指针
intLength()const;
//返回链表长度
voidPrintlist();
//输出链表
4.下面是一个整型堆栈类intStack的声明,请给出该类所有数据成员的类外定义。
在主程序中创建整型堆栈类的对象,调用并验证整型堆栈类的各方法。
classintStack
intStack(intsize=10);
~intStack();
//析构函数
boolPush(intelem);
//入栈操作
boolPop(int&
elem);
//出栈操作
//获取栈中元素的个数
private:
int*data;
//指向动态数组的指针
inttop;
//栈顶指针
intsize;
//堆栈的容量
实验条件(实验设备、软件、材料等):
1、装有Windows操作系统的微型计算机;
2、CodeBlocks软件。
实验设计方案(实验方法、步骤、操作过程、设计型实验、实验数据记录表格):
1、完成实验内容部分题目程序代码的编写。
2、调试运行程序,直到程序符合题目要求。
3、将程序的源代码和执行结果的截图贴在实验报告的【四】部分。
4、对实验进行总结,认真填写【五、实验结果分析】部分。
实验预习成绩(涂改无效)
合格□
不合格□
【四、实验过程、数据和实验结果记录】
实验方法、步骤、操作过程的记录描述或程序代码。
实验过程中输入/输出数据、程序运行结果的记录。
(可加附页)
1.
#include<
iostream>
{
Salary():
Wage(0),Subsidy(0),Rent(0),WaterFee(0),ElecFee(0)
{
//初始化工资数据的各分项数据为0
Salary(doubleWage,doubleSubsidy,doubleRent,doubleWaterFee,doubleElecFee)
:
Wage(Wage),Subsidy(Subsidy),Rent(Rent),WaterFee(WaterFee),ElecFee(ElecFee)
//初始化工资数据的各分项数据
voidsetWage(doublef)
Wage=f;
doublegetWage()
returnWage;
voidsetSubsidy(doublef)
Subsidy=f;
doublegetSubsidy()
returnSubsidy;
voidsetRent(doublef)
Rent=f;
doublegetRent()
returnRent;
voidsetWaterFee(doublef)
WaterFee=f;
doublegetWaterFee()
returnWaterFee;
voidsetElecFee(doublef)
ElecFee=f;
doublegetElecFee()
returnElecFee;
doubleRealSalary()
return(Wage+Subsidy-Rent-WaterFee-ElecFee);
}//计算实发工资
~Salary(){}
intmain()
SalaryEmp1;
SalaryEmp2(8000,20,1200,200,20);
cout<
<
"
--------------Emp1'
ssalaryis------------"
endl;
Wageis:
Emp1.getWage()<
Subsidyis:
Emp1.getSubsidy()<
Rentis:
Emp1.getRent()<
WaterFeeis:
Emp1.getWaterFee()<
ElecFeeis:
Emp1.getElecFee()<
RealSalaryis:
Emp1.RealSalary()<
--------------Emp2'
Emp2.getWage()<
Emp2.getSubsidy()<
Emp2.getRent()<
Emp2.getWaterFee()<
Emp2.getElecFee()<
Emp2.RealSalary()<
--------------Emp2waschenged------------"
Emp2.setWage(10000);
Emp2.setSubsidy(500);
Emp2.setRent(2000);
Emp2.setWaterFee(200);
Emp2.setElecFee(50);
return0;
}
2.
+
math.h>
classTriangle
doublea,b,c;
Triangle():
a(3),b(4),c(5){}
Triangle(doublea,doubleb,doublec):
a(a),b(b),c(c){}
doubleGetPeri()
returna+b+c;
doubleGetarea()
ints=(a+b+c)/2;
returnsqrt(s*(s-a)*(s-b)*(s-c));
voiddisplayInfo()
三角形三边为:
a<
"
b<
c<
三角形的周长为:
GetPeri()<
三角形的面积为:
Getarea()<
Triangletragle1;
Triangletragle2(6,8,10);
Triangletragle3=tragle2;
------tragle1'
sinfois:
------"
tragle1.displayInfo();
------tragle2'
tragle2.displayInfo();
------tragle3'
tragle3.displayInfo();
endl<
-----AfterusesthePointer-----"
Triangle*p=newTriangle;
p=&
tragle1;
tragle2;
tragle3;
3.
protected:
structNode
intdata;
~intList();
//向链表的第i个位置插入一个元素,插入成功返回true,失败返回false
boolInsert(inti,intelem);
boolRemove(inti,intelem);
int*Find(intelem)const;
intLength()const;
intList:
:
intList()//构造函数
pFirst=newNode;
if(pFirst==NULL)
链表创建失败"
exit(-1);
else
pFirst->
data=0;
next=NULL;
~intList()//析构函数
deletepFirst;
boolintList:
Insert(inti,intelem)
inttemp=0;
i--;
if(i==0)
data=elem;
structNode*p=pFirst;
while((p!
=NULL)&
&
(temp<
i-1))
p=p->
next;
temp++;
if((p==NULL)||temp>
i-1)
returnfalse;
structNode*NewP=newNode;
if(NewP==NULL)
NewP->
next=p->
p->
next=NewP;
returntrue;
Remove(inti,intelem)
if((p->
next)->
data==elem)
next=(p->
int*intList:
Find(intelem)const//查找值为elem的元素,返回指向该元素的指针
while((p->
data)!
=elem)
return&
(p->
data);
intintList:
Length()const//返回链表长度
intLen=0;
while(p!
=0)
Len++;
returnLen;
voidintList:
Printlist()//输出链表
=NULL)
p->
data<
;
intListiL1;
if(iL1.Insert(1,10))
插入元素成功"
插入元素失败"
if(iL1.Insert(2,34))
if(iL1.Insert(3,50))
iL1.Printlist();
删除元素后:
if(iL1.Remove(2,34))
删除元素成功"
删除元素失败"
查找的元素的指针为:
iL1.Find(50)<
链表长度为:
iL1.Length()<
4.
intStack(intsize=10);
~intStack();
boolPush(intelem);
boolPop(int&
int*data;
inttop;
intsize;
intStack:
intStack(intNewsize)
data=newint[Newsize];
top=0;
size=Newsize;
~intStack()
deletedata;
boolintStack:
Pop(int&
elem)
if(top<
=0)returnfalse;
elem=data[--top];
Push(intelem)
if(top>
=size)returnfalse;
data[top++]=elem;
intintStack:
Length()const
returntop;
intStackst;
intnum;
for(inti=0;
i<
10;
i++)
cin>
>
num;
st.Push(num);
cout<
加入元素后长度为:
st.Length()<
st.Pop(num);
num<
删除后长度为:
记录成绩(涂改无效)
【五、实验结果分析】
根据理论知识对所得到的实验数据或结果进行解释、分析。
对实验结果所作的一般性的判断、归纳、概括,实验的心得体会、建议等。
这次实验,我学会了类的构造,还有对类内成员的操作,写了链表和栈,了解了数据结构。
发现数组原来不同于栈,虽然对栈还有很多不明白的地方。
链表的结构也能很好的搞清楚。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告