沈阳理工C++上机实验.docx

上传人:b****7 文档编号:11053622 上传时间:2023-02-24 格式:DOCX 页数:20 大小:18.84KB
下载 相关 举报
沈阳理工C++上机实验.docx_第1页
第1页 / 共20页
沈阳理工C++上机实验.docx_第2页
第2页 / 共20页
沈阳理工C++上机实验.docx_第3页
第3页 / 共20页
沈阳理工C++上机实验.docx_第4页
第4页 / 共20页
沈阳理工C++上机实验.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

沈阳理工C++上机实验.docx

《沈阳理工C++上机实验.docx》由会员分享,可在线阅读,更多相关《沈阳理工C++上机实验.docx(20页珍藏版)》请在冰豆网上搜索。

沈阳理工C++上机实验.docx

沈阳理工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

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

当前位置:首页 > 工程科技 > 能源化工

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

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