《C++面向对象程序设计基础实验报告.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计基础实验报告.docx(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C+面向对象程序设计基础实验报告 太原理工大学现代科技学院 面向对象程序设计基础A 课程实验报告 实验名称c+基础、类对象、继承与派生、多态性 专业班级计算机 学号 姓名 指导教师王幸民 实验二C+基础 一、实验目的: (1)熟悉基本的输入输出方法; (2)掌握函数的定义、调用和声明方法,带默认形参的函数,重载函数;(3)熟悉编译预处理命令; (4)掌握常用算法的实现。 二、实验内容: (1)编写重载函数MAX1可分别求取2个整数、3个整数、2个双精度数、3个双精度数的最大值。 (2)编程计算图形的面积。程序可计算圆形、长方形、正方形的面积,运行时先提求用户选择图形的类型,然后,再要求用户对圆
2、形输入半径值,对长方形输入长与宽,对正方形输入边长,计算出面积的值后,在屏幕上显示出来。 三、实验代码: (1) #include using namespace std; int MAX1(int a,int b) return ab?a:b; int MAX1(int a,int b,int c) int max=a; if(bmax)max=b; if(cmax)max=c; return max; double MAX1(double a,double b) return ab?a:b; double MAX1(double a,double b,double c) double ma
3、x=a; if(bmax)max=b; if(cmax)max=c; return max; int main() int i=3,j=5,k=8; double x=1.5,y=46.2,z=23.2; coutx; switch(x) case 1: coutradius; area=3.1415*radius*radius; break; case 2: coutlengthwidth; area=length*width; break; case 3: coutsidelength; area=sidelength*sidelength; break; case 0: coutshow
4、(); delete r1; return 0; (2) #include #include using namespace std; class Complex private: int real; int image; public: Complex(int x,int y); Complex(Complex &c); void display(Complex &c); ; Complex:Complex(int x,int y) real=x; image=y; Complex:Complex(Complex &c) real=c.real; image=c.image; void Co
5、mplex:display(Complex &c) coutc.real+c.imageiend l; int main() Complex c1(20,40); Complex c2(0,0); Complex c3(c1); coutc1=; c1.display(c1); coutc2=; c2.display(c2); coutc3=; c3.display(c3); return 0; 四、 运行结果 (1) (2) 实验五 继承与派生 一、 实验目的 (1)初步掌握派生类构造函数的定义与使用方法,理解构造函数的调用过程,及基类成员的初始化过程; (2)理解冲突、支配规则与赋值兼容性
6、原则的概念。 二、 实验内容 (1)定义描述职工档案的类Archives ,私有数据成员为职工号(No)、姓名(Name8)、性别(Sex)、年龄(Age)。成员函数有:构造函数、显示职工信息的函数Show()。再由职工档案类派生出职工工资类Laborage ,在职工工资类Laborage 中新增数据成员:应发工资(SSalary)、社保金(Security)、实发工资(Fsalary),其成员函数有:构造函数,计算实发工资的函数Count(),计算公式为:实发工资=应发工资社保金。显示职工档案及工资的函数Display()。在主函数中用Laborage 类定义职工对象lab ,并赋初始值(1
7、001,”Cheng”,M,21,2000,100),然后显示职工档案与工资。 (2)定义描述矩形的类Rectangle ,其数据成员为矩形的中心坐标(X ,Y )、长(Length)与宽(Width)。成员函数为计算矩形面积的函数Area()与构造函数。再定义描述圆的类Circle ,其数据成员为圆的中心坐标(X ,Y )与半径R ,其成员函数为构造函数。再由矩形类与圆类多重派生出长方体类Cuboid ,其数据成员为长方体的高(High )与体积(V olume ) 。成员 函数为:构造函数,计算体积的函数Vol(),显示矩形坐标(X,Y)、长方体的长、宽、高与体积的函数Show()。主函数
8、中用长方体类定义长方体对象cub,并赋初始值(10,10,10,20,30,30,10,10),最后显示长方体的矩形坐标(X,Y)与长方体的长、宽、高与体积。 三、实验代码 (1)#includeiostream #includecstring using namespace std; class archives public: char name8; int no; char sex; int age; public: archives:archives(int ano,char *aname,char asex,int aage) no=ano; strcpy(name,aname);
9、sex=asex; age=aage; void show(archives &a); ; class laborage:public archives private: int ssalary; int security; int fsalary; public: laborage(int lno,char *lname,char lsex,int lage,int lssalary,int lsecurity ):archives(lno,lname,lsex,lage) ssalary=lssalary;security=lsecurity; int count(laborage &b)
10、; void display(laborage &a); ; void archives:show(archives &a) char *p; int i; p= ; cout工号: for(i=0;i8;i+) cout i; coutendl性别: cout年龄: int laborage:count(laborage &b) b.fsalary=b.ssalary-b.security; return b.fsalary; void laborage:display(laborage &a) cout工资: int main() laborage lab(1001,Cheng ,m,21
11、,2000,100);/strcpy lab.show(lab); lab.count(lab); lab.display(lab); getchar(); return 0; (2)#include #include using namespace std; const double pi=3.14; class rectangle float rx,ry,length,width; public: rectangle(float x,float y,float len,float wid); float area(); ; class circle float cx,cy,r; publi
12、c: circle(float cx,float cy,float r); ; class cuboid:public rectangle,public circle private: float high,volume; public: cuboid(float x1,float y1,float len,float wid,float x,float y,float r,float h):rectangle(x1,y1,len,wid),circle(x,y,r)high=h ; double vol(cuboid &a); void show(cuboid &a); ; rectangl
13、e:rectangle(float x,float y,float len,float wid) rx=x; ry=y; length=len; width=wid; float rectangle:area() return rx*ry; /* */ circle:circle(float x,float y,float cr) cx=x;cy=y;r=cr; /* */ double cuboid:vol(cuboid &a) a.volume=a.length*a.width*a.high; return a.volume; void cuboid:show(cuboid &a) cou
14、t长方体的endl; cout矩形坐标:( cout长: cout宽: cout高: cout体积: #include #includehead.h using namespace std; int main() cuboid cub(10,10,10,20,30,30,10,10); cub.vol(cub); cub.show(cub); getchar(); return 0; 四、运行结果 (1)(2) 实验六多态性 一、实验目的 (1)掌握C+中运算符重载的机制和运算符重载的方式; (2)理解类型转换的必要性,掌握类型转换的使用方法; (3)理解多态性,掌握虚函数的设计方法; (4)
15、学习使用Visual Studio调试虚函数。 二、实验内容 (1)编写一个抽象类SHAPE,在此基础上派生出Rectangle和Circle,二者都有GetArea()函数计算对象的面积,计算周长的函数GetPerim();完善类的功能与结构。 (2)声明一个车(Vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(Bicycle)类、汽车(Motorcar)类,从(Bicycle)和(Motorcar)派生出摩托车(Motorcycle)类,它们都有Run、Stop等成员函数。利用虚函数解决问题。 (3)编写一个程序,用于计算正方形、长方形、直角三角形和圆的总面积。 三、实
16、验代码 (1)#include using namespace std; class SHAPE public: SHAPE() SHAPE() virtual float GetArea()=0; virtual float GetPerim()=0; ; class Rectangle:public SHAPE float itsLength; float itsWidth; public: Rectangle( float length, float width) itsLength=length;itsWidth=width; float Getl()return itsLength;
17、 float Getw()return itsWidth; float GetArea()return itsLength*itsWidth; float GetPerim()return 2*(itsLength+itsWidth); ; class Circle:public SHAPE float itsRadius; public: Circle( float radius) itsRadius=radius; float Getr()return itsRadius; float GetArea()return itsRadius*itsRadius*3.14159; float G
18、etPerim()return 2*itsRadius*3.14159; ; #include using namespace std; int main() Rectangle A(4,5); Circle B(4); cout长方形的长: cout圆的半径:B.Getr() 面积: B.GetArea() 周长:B.GetPerim()endl; return 0; (2)#include using namespace std; class Vehicle protected: int wheel,weight; public: Vehicle(int i,int j): wheel(i
19、), weight(j) virtual int Getwheel()return wheel ; virtual int Getweight()return weight ; virtual void Run()=0; virtual void Stop()=0; ; class Bicycle:virtual public Vehicle public: Bicycle(int x,int y) : Vehicle(x,y) int Getwheel()return Vehicle: Getwheel(); int Getweight()return Vehicle: Getweight(
20、); void Run()cout Bicycle :run轮子数: Getwheel() ; void Stop()cout Bicycle :stop 重量: Getweight()endl; ; class Motorcar:virtual public Vehicle public: Motorcar(int x,int y):Vehicle(x,y) int Getwheel()return Vehicle: Getwheel (); int Getweight()return Vehicle: Getweight (); void Run()cout Motorcar :run轮子数: Getwheel() ; void Stop()cout Motorcar :stop 重量: Getweight()endl; ; class Motorcycle:public Bicycle,public Motorcar public: