沈阳理工C++上机实验.docx
《沈阳理工C++上机实验.docx》由会员分享,可在线阅读,更多相关《沈阳理工C++上机实验.docx(20页珍藏版)》请在冰豆网上搜索。
沈阳理工C++上机实验
实验:
定义学生类,在主函数中定义对象的同时初始化各数据成员的值,调用成员函数实现对数据的输出
#include
#include
usingnamespacestd;
classstudent
{
private:
intnumble;
stringname;
intage;
public:
student(stringn,intnum,inta);
~student();
voidShow();
};
student:
:
student(stringn,intnum,inta)
{
name=n;
numble=num;
age=a;
}
voidstudent:
:
Show()
{
cout<<"name:
"<cout<<"numble:
"<cout<<"age:
"<}
student:
:
~student(){}//析构函数
voidmain()
{
students("李华",12,20);
s.Show();
}
实验:
定义一个圆类,计算圆的面积和周长
#include
usingnamespacestd;
#include
constdoublePI=3.14159;
classCircle//圆类
{
private:
doubler;//圆的半径
public:
Circle(doubler=0)//构造函数
{
this->r=r;
}
~Circle()//析构函数
{
}
doubleArea()//圆面积
{
returnPI*r*r;
}
doublePerim()//圆周长
{
return2*PI*r;
}
voidShow()//输出圆的面积和周长
{
cout<<"Areais:
"<
cout<<"Perimis:
"<}
};
voidmain()
{
doubler=12.5;
cout<<"Circle:
"<cout<<"结果如下:
"<CircleCir(r);//建立圆对象
Cir.Show();//调用圆类的输出函数
}
实验:
定义一个本科生类undergradutate,包括学号、姓名、专业这三个数据成员,在此基础上派生出研究生类graduate,并增加导师、发表论文数等属性。
可以通过显示个人信息函数showinfo来查看个人档案。
#include
usingnamespacestd;
classUndergraduate
{
protected:
longid;
char*name;
char*major;
public:
Undergraduate(longid_val,char*name_val,char*major_val)
{
id=id_val;
name=newchar[50];
strcpy(name,name_val);
major=newchar[50];
strcpy(major,major_val);
}
virtualvoidshowInfo();
~Undergraduate()
{
deletename;
deletemajor;
}
};
voidUndergraduate:
:
showInfo()
{
cout<<"学号"<"<}
classGraduate:
publicUndergraduate
{
private:
char*tutor;
shortpaperNumber;
public:
Graduate(longid_val,char*name_val,char*major_val,
char*tutor_val,shortpaperNumber_val):
Undergraduate(id_val,name_val,major_val)
{
tutor=newchar[100];
strcpy(tutor,tutor_val);
paperNumber=paperNumber_val;
}
voidshowInfo()
{
cout<<"学号"<"<cout<<"导师"<}
~Graduate()
{
deletetutor;
}
};
intmain()
{
Undergraduateundergraduate(2005131448,"刘云","计算机");
Graduategraduate(2003131452,"Jack","计算机","kate",10);
undergraduate.showInfo();
graduate.showInfo();
return0;
}
实验:
描述一个学校的情况,描述对象包括教师和学生。
声明一个类People,其中包含成员变量name(姓名)、age(年龄)、add(地址)作为教师类和学生类的基类。
在学生类中增加成员变量所在分院、年级,在教师类中增加专业、工资。
在每一类中均有构造函数和析构函数,分别用于输出“这是People类(或学生类或教师类)的构造(或析构)函数!
”
实验要求:
1、编写程序声明People类,共有成员变量name(姓名)、age(年龄)、add(地址)。
2、分别构造派生类teacher和student。
3、在两个派生类中分别设置成员函数,输出teacher和student的信息。
#include
#include
usingnamespacestd;
classpeople
{
protected:
stringname;
intage;
stringadd;
public:
people(stringname,intage,stringadd)
{
this->name=name;
this->age=age;
this->add=add;
cout<<"people的构造函数被调用"<}
~people(){cout<<"people的析构函数被调用"<};
classstudent:
publicpeople
{
private:
stringdepartment;
stringgrade;
public:
student(stringname,intage,stringadd,stringdepartment,stringgrade):
people(name,age,add)
{
this->department=department;
this->grade=grade;
cout<<"student的构造函数被调用"<}
~student(){cout<<"student的析构函数被调用"<voidshow()
{
cout<}
};
classteacher:
publicpeople
{
private:
stringmajor;
doublesalary;
public:
teacher(stringname,intage,stringadd,stringmajor,doublesalary):
people(name,age,add)
{
this->major=major;
this->salary=salary;
cout<<"teacher的构造函数被调用"<}
~teacher(){cout<<"teacher的析构函数被调用"<voidshow()
{
cout<}
};
intmain()
{
students("孙云",19,"五号大街","物理系","二年级");
teachert("李华",45,"桃园小区","计算机专业",2500);
s.show();
t.show();
return0;
}
实验:
设计两个类,一个类描述点,另一个类描述圆,圆由圆心和半径构成,圆类由点类派生而来,其中圆心的特性描述由点类继承下来
#include
usingnamespacestd;
classPoint
{intm_x,m_y;
public:
Point(intx,inty){m_x=x;m_y=y;}
intget_x(){returnm_x;}
intget_y(){returnm_y;}
};
classCircle:
publicPoint
{doubleradius;
public:
Circle(intx,inty,doubler):
Point(x,y)
{radius=r;}
doubleArea(){return3.14*radius*radius;}
intget_centreX(){returnget_x();}
intget_centreY(){returnget_y();}
};
voidmain()
{
intx,y;
doubler;
cout<<"x=";cin>>x;
cout<<"y=";cin>>y;
cout<<"r=";cin>>r;
Circlec(x,y,r);
cout<<"thecentreoftheCircleis"<cout<<"theAreaoftheCircleis"<}
实验内容:
一、下列container类是一个公共的抽象基类,其中定义有求表面积和体积的纯虚函数,公共数据成员radius作为球的半径,正方体的边长和圆柱体的底面半径,要求根据此类设计程序来计算正方体、球、圆柱的表面积和体积
classcontainer
{
protected:
doubleradius;
public:
container(doubleradius)
{
container:
:
radius=radius;
}
virtualdoublesurface_area()=0;
virtualdoublevolume()=0;
};
二、计算几种不同的三维图形的表面积和体积,这里定义一个抽象类Cshape,将其成员函数显示基本图形信息函数DisAttr()、计算面积函数Sarea()和计算体积函数Volume()定义为纯虚函数,根据此抽象类派生出球体、正方体、长方体和圆柱体,并分别重新实现基类中的纯虚函数来显示输出计算结果。
实验要求:
一、1、根据所给的抽象类container派生出要描述的三个类,在这三个类中都要具有求表面积和体积的重定义版本,并在圆柱体类中定义一个变量height作为圆柱体的高。
2、函数中定义一个基类指针变量,用这个变量指向不同的派生类对象,来调用不同类的函数版本,以此来实现多态性。
3、在虚函数的重定义版本中,可以使用内联函数直接返回结果。
二、1、声明形状类Cshape为抽象类,并将其成员函数disattr()、sarea()、volume()定义为纯虚函数。
2、声明四个派生类:
球体类、正方体类、长方体类、圆柱体类,并重新实现基类中的纯虚函数。
3、在main函数中定义基类的指针数组,分别用来指向四个不同的派生类,并初始化各派生类的对象。
4、在main函数中计算所有三维图形的总的表面积和体积,并计算三维图形占总表面积总体积的百分比
一
#include
#definepi3.14
usingnamespacestd;
classcontainer
{protected:
doubleradius;
public:
container(doubler)
{radius=r;}
virtualdoubleArea()=0;
virtualdoublevolume()=0;
};
classCube:
publiccontainer
{private:
doubleradius;
public:
Cube(doubler=0);
doubleArea();
doublevolume();
};
Cube:
:
Cube(doubler):
container(r)
{radius=r;}
doubleCube:
:
Area()
{return6*radius*radius;}
doubleCube:
:
volume()
{returnradius*radius*radius;}
classCylinder:
publiccontainer
{private:
doubleheight;
public:
Cylinder(doubler=0,doubleh=0);
doubleArea();
doublevolume();
};
Cylinder:
:
Cylinder(doubleh,doubler):
container(r)
{height=h;}
doubleCylinder:
:
Area()
{returnpi*2*radius*(radius+height);}
doubleCylinder:
:
volume()
{returnpi*radius*radius*height;}
classSphere:
publiccontainer
{private:
doubleradius;
public:
Sphere(doubler=0);
doubleArea();
doublevolume();
};
Sphere:
:
Sphere(doubler):
container(r)
{radius=r;}
doubleSphere:
:
Area()
{return4*pi*radius*radius;}
doubleSphere:
:
volume()
{return4*pi*radius*radius*radius/3;}
intmain()
{container*p;
Cubec(10);
Spheres(10);
Cylindercy(5,10);
p=&c;
cout<<"CubeArea:
"<Area()<cout<<"Cubevolume:
"<volume()<p=&cy;
cout<<"CylinderArea:
"<Area()<cout<<"Cylindervolume:
"<volume()<p=&s;
cout<<"SphereArea:
"<Area()<cout<<"Spherevolume:
"<volume()<return1;
}
二
#include
usingnamespacestd;
classCshape
{
public:
virtualvoidDisAttr()=0;
virtualdoubleSarea()=0;
virtualdoubleVolume()=0;
};
classSphere:
publicCshape
{
doubleradius;
public:
voidDisAttr(){cout<<"这是球体"<Sphere(doubler):
radius(r){}
doubleSarea(){return4*3.14*radius*radius;}
doubleVolume(){return4*3.14*radius*radius*radius/3;}
};
classSquare:
publicCshape
{
doubleradius;
public:
voidDisAttr(){cout<<"这是正方体"<Square(doubler):
radius(r){}
doubleSarea(){return6*radius*radius;}
doubleVolume(){returnradius*radius*radius;}
};
classBox:
publicCshape
{
doublewidth,length,radius;
public:
voidDisAttr(){cout<<"这是长方体"<Box(doublew,doublel,doubler):
radius(r){width=w;length=l;}
doubleSarea(){return2*(length*width+length*radius+width*radius);}
doubleVolume(){returnradius*length*width;}
};
classCylinder:
publicCshape
{
doubleheight,radius;
public:
voidDisAttr(){cout<<"这是圆柱体"<Cylinder(doubleh,doubler):
radius(r){height=h;}
doubleSarea(){return3.14*2*radius*(radius+height);}
doubleVolume(){return3.14*radius*radius*height;}
};
intmain()
{
doubleSareaSum=0;
doubleVolumeSum=0;
Cshape*pS[5];
pS[1]=newSphere
(1);
pS[2]=newSquare
(2);
pS[3]=newBox(1,2,3);
pS[4]=newCylinder(4,2);
SareaSum+=pS[1]->Sarea();
SareaSum+=pS[2]->Sarea();
SareaSum+=pS[3]->Sarea();
SareaSum+=pS[4]->Sarea();
cout<<"总表面积是:
"<cout<<"各三维图形占总表面积的百分比如下:
"<cout<<"球体:
"<<100*pS[1]->Sarea()/SareaSum<<"%"<cout<<"正方体:
"<<100*pS[2]->Sarea()/SareaSum<<"%"<cout<<"长方体:
"<<100*pS[3]->Sarea()/SareaSum<<"%"<cout<<"圆柱体:
"<<100*pS[4]->Sarea()/SareaSum<<"%"<VolumeSum+=pS[1]->Volume();
VolumeSum+=pS[2]->Volume();
VolumeSum+=pS[3]->Volume();
VolumeSum+=pS[4]->Volume();
cout<<"总体积是:
"<cout<<"各三维图形占总体积的百分比如下:
"<cout<<"球体:
"<<100*pS[1]->Volume()/VolumeSum<<"%"<cout<<"正方体:
"<<100*pS[2]->Volume()/VolumeSum<<"%"<cout<<"长方体:
"<<100*pS[3]->Volume()/VolumeSum<<"%"<cout<<"圆柱体:
"<<100*pS[4]->Volume()/VolumeSum<<"%"<return0;
}
实验:
)、编写一个类,声明一个数据成员和一个静态数据成员,让构造函数初始化数据成员,并把静态数据成员加1,让析构函数把静态数据成员减1
#include
classexample
{
public:
example(intnum)
{
B=num;
A++;
}
voidDisplay()
{
cout<<"B="<
}
~example()
{
A--;
cout<<"A="<}
private:
intB;
staticintA;
};
intexample:
:
A=0;
voidmain()
{
examplea(20),b(30),c(40);
a.Display();
b.Display();
c.Display();
}
实验:
设计一个程序,其中有三个类CBank、BBank和GBank,分别为中国银行类、工商银行类和农业银行类。
每个类都包含一个私有数据balance用于存放储户在该行的存款数,另有一个友元函数total用于计算储户在这三家银行中的总存款数
#include
using