邹欣C++实验2.docx
《邹欣C++实验2.docx》由会员分享,可在线阅读,更多相关《邹欣C++实验2.docx(13页珍藏版)》请在冰豆网上搜索。
邹欣C++实验2
福建工程学院计算机与信息科学系
实验报告
–学年第学期任课老师:
课程名称
班级
1102
座号
15
姓名
邹欣
实验题目
实验时间
实验开始日期:
报告提交日期:
实验目的、要求
掌握类与对象的定义方法,成员函数的实现与调用方法,领会类实现数据隐藏与封装的原理。
实验步骤与内容
1、编写Circle类,有数据成员Radius,
成员函数get_area()用于计算面积,
get_perimeter()用于计算周长,
disp()用于显示面积和周长,
set_radius()设置半径,
get_radius()获取半径。
完善必要的构造函数,构造一个Circle的对象进行测试,对构造函数和析构函数的调用情况进行分析。
#include"stdafx.h"
#include
usingnamespacestd;
constfloatPI=3.1415;
classCircle{
public:
floatget_area();
floatget_perimeter();
voiddisp();
floatset_radius(floatr2);
floatget_radius();
Circle(floatr);
Circle();
~Circle();
private:
floatradius;
};
//有参数的构造函数
Circle:
:
Circle(floatr){
radius=r;
cout<<"有参数构造函数被调用!
"<}
//无参数的构造函数
Circle:
:
Circle(){
cout<<"无参数构造函数被调用!
"<}
//析构函数
Circle:
:
~Circle(){
cout<<"析构函数被调用!
"<//求面积
floatCircle:
:
get_area(){
returnPI*radius*radius;
}
//求周长
floatCircle:
:
get_perimeter(){
return2*PI*radius;
}
//显示函数
voidCircle:
:
disp(){
cout<<"面积是:
"<cout<<"周长是:
"<}
//获取半径
floatCircle:
:
get_radius()
{returnradius;}
//设置半径
floatCircle:
:
set_radius(floatr2){
cout<<"Pleaseinputr:
";
cin>>r2;
radius=r2;
returnradius;
}
voidmain()
{
floata;
Circleb;
b.set_radius(a);
cout<<"半径是:
"<b.disp();
floatc;
cout<<"请输入半径:
"<cin>>c;
Circled(c);
cout<<"半径是:
"<d.disp();
}
2、编写圆柱体类Cylinder,有数据成员Circle对象和长度Len,
成员函数get_vol()计算体积,
get_area()计算表面积。
完善必要的构造函数和拷贝构造函数,构造Cylinder的对象进行测试。
对构造函数,拷贝构造函数和析构函数的调用情况进行分析。
#include"stdafx.h"
#include
usingnamespacestd;
constfloatPI=3.1415;
classCircle{
public:
floatget_area();
floatget_perimeter();
voiddisp();
floatset_radius(floatr2);
Circle(floatr);
Circle();
Circle(Circle&C);
~Circle();
private:
floatradius;
};
//有参数的构造函数
Circle:
:
Circle(floatr){
radius=r;
cout<<"圆的构造函数被调用!
"<}
//复制构造函数
Circle:
:
Circle(Circle&C){
radius=C.radius;
cout<<"圆的复制构造函数被调用"<}
//析构函数
Circle:
:
~Circle(){
cout<<"圆的析构函数被调用!
"<//求圆的面积
floatCircle:
:
get_area(){
returnPI*radius*radius;
}
//求圆的周长
floatCircle:
:
get_perimeter(){
return2*PI*radius;
}
classCylinder{
public:
floatget_vol();//计算体积
floatget_area();//计算表面积
Cylinder(CircleC1,floatL);
~Cylinder();
private:
CircleL1;
floatlen;
};
//组合类的构造函数
Cylinder:
:
Cylinder(CircleC1,floatL):
L1(C1),len(L){
cout<<"组合类的构造函数被调用"<}
//析构函数
Cylinder:
:
~Cylinder(){
cout<<"圆柱的析构函数被调用!
"<//计算体积
floatCylinder:
:
get_vol(){
return(L1.get_area())*len;
}
//计算表面积
floatCylinder:
:
get_area(){
returnL1.get_perimeter()*len+2*L1.get_area();
}
intmain()
{
floatr,h;
cout<<"请输入圆柱的底面半径:
"<cin>>r;
cout<<"请输入圆柱的高:
"<cin>>h;
Circlea(r);
Cylinderb(a,h);
cout<<"表面积是:
"<cout<<"体积是:
"<return0;
}
设计学生类Stu,含no(学号),name(姓名),deg(成绩)数据成员,成员函数有setdata()用于设置对象,disp()用于输出80—89分段学生数据。
在main()中定义对象数组,用于存储输入学生数据。
#include"stdafx.h"
#include"iostream"
#include"string"
usingnamespacestd;
#defineMax3
//学生类Stu
classStu{
public:
voidsetdata(stringno,stringname,floatdeg);//用于设置对象
voiddisp();//用于输出80—89分段学生数据
//构造函数
Stu()
{
cout<<"构造函数被调用"<}
private:
stringsno;//学号
stringsname;//姓名
floatsdeg;//成绩
};
//实现成员函数
voidStu:
:
setdata(stringno,stringname,floatdeg){
sno=no;
sname=name;
sdeg=deg;
}
voidStu:
:
disp(){
if(sdeg>=80&&sdeg<=89)
{
cout<<"学号:
"<"<}
}
intmain()
{
Stustu[Max];//创建对象数组
stringstr[Max],name[Max];//str数组存储学生学号,name数组存储学生姓名
floatscores[Max];//scores数组存储学生成绩
//输入学生信息
for(inti=0;i{
cout<<"第"<
"<cout<<""<<"学号:
";
cin>>str[i];
cout<<""<<"姓名:
";
cin>>name[i];
cout<<""<<"成绩:
";
cin>>scores[i];
cout<<"\n";
}
cout<<"成绩在80-89:
"<for(intj=0;j{
stu[j].setdata(str[j],name[j],scores[j]);//调用对象数组的成员方法
stu[j].disp();
}
system("pause");
return0;
}
或者:
#include"stdafx.h"
#include
#include
#include
usingnamespacestd;
constintmax=2;
classStu{
public:
Stu();
voidsetdata();
voiddisp();
private:
charno[10];
charname[10];
floatdeg;
};
Stu:
:
Stu(){cout<<"构造函数被调用!
"<voidStu:
:
setdata(){
chara[10],b[10];
floatc;
cout<<"请输入学号:
";
cin>>a;
cout<cout<<"请输入姓名:
";
cin>>b;
cout<cout<<"请输入成绩:
";
cin>>c;
strcpy(no,a);
strcpy(name,b);
deg=c;
}
voidStu:
:
disp(){
if(deg>=80&°<=89)
cout<<"学号:
"<"<"<}
intmain()
{
Stud[max];
inti;
for(i=0;i<=max;i++)
{
d[i].setdata();
cout<<"第"<
"<}
cout<<"输入结束!
"<cout<<"输出成绩在80-89的信息:
"<for(i=0;i<=max;i++)
d[i].disp();
system("pause");
return0;
}
试验过程记录
总结以及心得体会
指导老师评阅意见
指导老师:
年月日
填写内容时,可把表格扩大。
实验的源程序代码(要有注释)附在表后。