2014太原理工大学C++实验报告(共41页)_第1页
2014太原理工大学C++实验报告(共41页)_第2页
2014太原理工大学C++实验报告(共41页)_第3页
2014太原理工大学C++实验报告(共41页)_第4页
2014太原理工大学C++实验报告(共41页)_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上本科实验报告课程名称: C+面向对象程序设计 实验项目: C+语言编程 实验地点: 明向校区 专业班级: 软件1431 学号: XXXX 学生姓名: 白建兴 指导教师: 崔晓红 2015年5月10 日专心-专注-专业实验内容 实验2.3(1)(2)(3)实验记录1.运行例题程序:#include<iostream>using namespace std;void fn1(int z=5);int x=1,y=2;int main()cout<<"Begin. . ."<<endl;cout<<&quo

2、t;x="<<x<<endl;cout<<"y="<<y<<endl;cout<<"Evaluae x and y in main()."<<endl;int x=10,y=20;cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;cout<<"Step into fn1()."<<

3、;endl;fn1();fn1(10);cout<<"Bace in main"<<endl;cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;return 0;void fn1(int z)static int x=100;int y=200;cout<<"x="<<x<<endl;cout<<"y="<<y&

4、lt;<endl;x=x+y+z;运行结果:2.编写重载函数max1可分别求取2个整数,3个整数,3个双精度数,3个双精度数的最大值#include<iostream>using namespace std;int max(int x,int y);double max(double x,double y);int max(int x,int y,int z);double max(double x,double y,double z);int main()int a,b,c;cout<<"请输入3个整数"<<endl;cin>

5、;>a>>b>>c;cout<<"2个整数的最大值:"<<max(a,b)<<endl;cout<<"3个整数的最大值:"<<max(a,b,c)<<endl;double i,j,k;cout<<"请输入3个双精度数"<<endl;cin>>i>>j>>k;cout<<"2个双精度数的最大值:"<<max(i,j)<<

6、endl;cout<<"3个双精度数的最大值:"<<max(i,j,k)<<endl;return 0;int max(int x,int y)return x>y?x:y;double max(double x,double y)return x>y?x:y;int max(int x,int y,int z)return (max(x,y)>z)?max(x,y):z;double max(double x,double y,double z)return (max(x,y)>z)?max(x,y):z;运行结

7、果:3.用new操作为一个包含10个整数的数组分配内存,输入若干个值到数组中,分别统计其中正数和负数的个数后再用delete操作释放内存。#include<iostream>using namespace std;const int N=10;int main()int *p,i,plus,minus;p=new intN;if(!p)cout<<"内存分配错误!"<<endl;exit(1);plus=0;minus=0;cout<<"请任意输入"<<N<<"个整数&qu

8、ot;<<endl;for(i=0;i<N;i+)cin>>pi;if(pi>0)plus+;else if(pi!=0)minus+;cout<<"正数的个数:"<<plus<<endl;cout<<"负数的个数:"<<minus<<endl;delete p;return 0;运行结果:心得体会在经过多次编写实验程序后,比较了C与C+,二者在编程的思想上完全不同,但是在C+的编译器中,也会用到很多C中的东西,虽然C+后期修改程序上比C要容易了很

9、多,但是在编写过程中要比C要麻烦。虽然编写了这么多的程序,但是对编写的程序如何变成软件还是有很多的疑惑以及更大好奇心。实验内容 实验3.3(1)(2)(3)(4)实验记录1.程序:#include<iostream>#define pi 3.14using namespace std;int main()cout<<"1计算圆面积"<<endl<<"2计算矩形面积"<<endl<<"3计算正方形面积"<<endl<<"4退出&qu

10、ot;<<endl<<"请输入对应程序代码"<<endl;int x;double area;cin>>x;while(x!=4)if(x=1)double r;cout<<"请输入圆半径:"cin>>r;area=3.14*r*r;cout<<"圆的面积:"<<area<<endl;else if(x=2)double m,n;cout<<"请输入矩形的长和宽:"cin>>m>

11、>n;area=m*n;cout<<"矩形的面积:"<<area<<endl;else if(x=3)double m;cout<<"请输入正方形的边长:"cin>>m;area=m*m;cout<<"正方形的面积:"<<area<<endl;elsecout<<"输入有误,请重新输入!"<<endl;cout<<"输入代码:"cin>>x;ret

12、urn 0;运行结果:2.定义一个复数类Complex,复数的实部Real与虚部Image定义为私有数据成员。用复数类定义复数对象c1、c2、c3,用默认构造函数将c1初始化为c1=20+40i ,将c2初始化为c2=0+0i,用拷贝构造函数将c3初始化为c3=20+40i。用公有成员函数Dispaly()显示复数c1、c2与c3 的内容。程序:#include<iostream>using namespace std;class Complexprivate:double real,image;public:Complex(double r,double i);Complex(C

13、omplex &c);void Display();Complex:Complex(double r,double i)real=r;image=i;Complex:Complex(Complex &c)real=c.real;image=c.image;void Complex:Display()cout<<real<<"+"<<image<<"i"<<endl;int main()Complex c1(20,40),c2(0,0),c3(c1);cout<<&qu

14、ot;c1="c1.Display();cout<<"c2="c2.Display();cout<<"c3="c3.Display();return 0;运行结果:3.定义一个学生成绩类Score,描述学生成绩的私有数据成员为学号(No)、姓名(Name8)、数学(Math)、物理(Phi)、数据结构(Data)、平均分(ave)。定义能输入学生成绩的公有成员函数Write(),能计算学生平均分的公有成员函数Average(),能显示学生成绩的公有成员函数Display()。在主函数中用Score类定义学生成绩对象数组s

15、3。用Write()输入学生成绩,用Average()计算每个学生的平均分,最后用Display()显示每个学生的成绩。实验数据:No Name Math Phi Data Ave1001Zhou 80 70 601002Chen 90 80 851003Wang 70 75 89程序:#include<iostream>#include<string>using namespace std;class Scoreprivate:int No;char Name10;float Math,Phi,Data,Ave;public:void Write(int no,cha

16、r name,float math,float phi,float data)No=no;strcpy(Name,name);Math=math;Phi=phi;Data=data;void Average()Ave=(Math+Phi+Data)/3;void Display()cout<<No<<"t"<<Name<<"t"<<Math<<"t"<<Phi<<"t"<<Data<<"

17、t"<<Ave<<endl;int main()int i,no;char name10;float math,phi,data;Score s3;cout<<"学号 姓名 数学 物理 数据结构"<<endl;for(i=0;i<3;i+)cin>>no>>name>>math>>phi>>data;si.Write(no,name,math,phi,data);si.Average();cout<<"学号 姓名 数学 物理 数据

18、结构 平均分"<<endl;for(i=0;i<3;i+)si.Display();return 0;运行结果:4.定义一个矩形类Rectangle,矩形的左上角(Left,Top)与右下角坐标(Right,Bottom)定义为保护数据成员。用公有成员函数Diagonal()计算出矩形对角线的长度,公有成员函数Show()显示矩形左上角与右下角坐标及对角线长度。在主函数中用new运算符动态建立矩形对象r1,初值为(10,10,20,20)。然后调用Show()显示矩形左上角与右下角坐标及对角线长度。最后用delete运算符回收为矩形动态分配的存储空间。程序:#inc

19、lude<iostream>#include<cmath>using namespace std;class Rectangleprivate:float Left,Top,Right,Bottom;public:Rectangle(float left,float top,float right,float bottom);float Diagonal();void Show();Rectangle:Rectangle(float left,float top,float right,float bottom):Left(left),Top(top),Right(ri

20、ght),Bottom(bottom)float Rectangle:Diagonal()float dia;dia=sqrt(Right-Left)*(Right-Left)+(Bottom-Top)*(Bottom-Top);return dia;void Rectangle:Show()cout<<"矩形左上角坐标: <"<<Left<<","<<Top<<">"<<endl;cout<<"矩形右下角坐标: <&quo

21、t;<<Right<<","<<Bottom<<">"<<endl;cout<<"矩形对角线长度: "<<Rectangle:Diagonal()<<endl;int main()Rectangle *r1;r1=new Rectangle(10,10,20,20);r1->Diagonal();r1->Show();delete r1;return 0;运行结果:遇到的问题和解决方法实验内容 实验5.3(1)(2)(3)

22、(4)实验记录1. 程序:#include<iostream>using namespace std;class Pointpublic:Point(int xx,int yy):x(xx),y(yy) private:int x,y;class Rectangle :public Pointpublic:Rectangle(Point pr,int x,int y):Point(pr),len(x),wid(y) cout<<"constructing rectanglen" Rectangle()cout<<"destruc

23、ting rectanglen" int get_len() return len; int get_wid() return wid; double area() return len*wid; double length() return 2*(len+wid);private:int len,wid;class Circle :public Pointpublic:Circle(Point pc,int x):Point(pc),r(x)cout<<"constructing circlen"Circle() cout<<"

24、destructing Circlen"double area() return r*r*3.14;double length() return 2*r*3.14;private:int r;class Square :public Pointpublic:Square(Point ps,int x):Point(ps),len(x) cout<<"constructing squaren"Square () cout<<"desttucting Squaren"double area() return len*len;

25、double length() return 4*len;private:int len;int main()int x,y,len,wid,rad;cin>>x>>y>>len>>wid;Point p1(x,y);cout<<"p1 has been constructed"<<endl;Rectangle r1(p1,len,wid);cout<<"r1 has been constructed"<<endl;cout<<"矩形的周

26、长:"<<r1.length()<<endl;cin>>x>>y>>rad;Point p2(x,y);Circle c1(p2,rad);cout<<"c1 has been constructed"<<endl;cout<<"圆的周长:"<<c1.length()<<endl;cin>>x>>y>>len;Point p3(x,y);Square s1(p3,len);cout<&

27、lt;"s1 has been constructed"<<endl;cout<<"正方形的周长:"<<s1.length()<<endl;return 0;运行结果:(坐标似乎没有用处)2. 程序:#include<iostream>using namespace std;class Personchar strName20;int nAge;public:Person(char *name,int age)strcpy(strName,name);nAge=age;cout<<&

28、quot;constructor of person"<<strName<<endl;Person() cout<<"deconstrutor of person"<<strName<<endl;class Employee :public Personchar strDept20;Person Wang;public:Employee (char *name,int age,char *dept,char *name1,int age1):Person(name,age),Wang(name1,age1

29、)strcpy(strDept,dept);cout<<"constructor of Employee"<<strDept<<endl;Employee() cout<<"deconstrucor of Employee"<<strDept<<endl;int main()Employee emp("张三",25,"财务部","李四",30);return 0;运行结果:3. 定义描述职工档案的类Archives,私有数据

30、成员为职工号No,姓名Name8,性别Sex,年龄Age。成员函数有:构造函数,显示职工信息的函数Show()。再由职工档案类派生出职工工资类Laborage,在职工工资类Laborage中新增加数据成员:应发工资(SSalary),社保金(Security),实发工资(Fsalary),其成员函数有:构造函数,计算实发工资的函数Count()计算公式为:实发工资=应发工资-社保金。显示职工档案以及工资的函数。在主函数中用Laborage类定义职工对象lab,并赋初始值(1001,”cheng,M,21,2000,100),然后显示职工档案与工资。#include<iostream>

31、;#include<string.h>using namespace std;class Archivesprivate:int No;char Name8,Sex;int Age;public:Archives(int no,char *name,char sex,int age);void Show();class Laborage :public Archivesprivate:float SSalary, Security,Fsalary;public:Laborage(int no,char *name,char sex,int age,float sal,float s

32、ec);float Count();void Display();Archives:Archives(int no,char *name,char sex,int age)No=no;strcpy(Name,name);Sex=sex;Age=age;void Archives:Show()cout<<No<<"t"<<Name<<"t"<<Sex<<"t"<<Age<<"t"Laborage:Laborage(int

33、no,char *name,char sex,int age,float sal,float sec):Archives(no,name,sex,age)SSalary=sal;Security=sec;float Laborage:Count()return SSalary-Security; void Laborage:Display()Show();cout<<SSalary<<"t"<<Security<<"t"<<Count()<<endl;int main()Labora

34、ge lab(1001,"Cheng",'M',21,2000,100);cout<<"职工号 姓名 性别 年龄 应发工资 社保金 实发工资"<<endl;lab.Display();return 0;运行结果:4. 定义个人信息类Person,其数据成员有姓名、性别、出生年月。并以Person为基类定义一个学生的派生类Student,增加描述学生的信息:班级、学号、专业、英语成绩和数学成绩。再由基类Person定义一个职工的派生类Employee,增加描述职工的信息:部门、职务、工资。编写程序实现学生与职工信息的

35、输入与输出。#include<iostream>#include<string>using namespace std;class Personchar Name8,Sex;int Birth;public:Person(char *name,char sex,int birth)strcpy(Name,name);Sex=sex;Birth=birth;void Show()cout<<Name<<" "<<Sex<<" "<<Birth<<" &

36、quot;class Student :public Personint Classes,No,Math,English;char Major8;public:Student(char *name,char sex,int birth,int cl,int no,char *m,int en,int math):Person(name,sex,birth)Classes=cl;No=no;Math=math;English=en;strcpy(Major,m);void St_Display()cout<<" 输出学生的信息"<<endl;cout&

37、lt;<"姓名 性别 出生年月 班级 学号 专业 英语成绩 数学成绩"<<endl;Show();cout<<Classes<<" "<<No<<" "<<Major<<" "<<English<<" "<<Math<<endl;class Employee :public Personint Salary;char Apartment8,Position8;

38、public:Employee(char *name,char sex,int birth,char *ap,char *po,int s):Person(name,sex,birth)strcpy(Apartment,ap);strcpy(Position,po);Salary=s;void Em_Display()cout<<" 输出职工的信息"<<endl;cout<<"姓名 性别 出生年月 部门 职务 工资"<<endl;Show();cout<<Apartment<<&qu

39、ot; "<<Position<<" "<<Salary<<endl;int main()int birth,cl,no,en,math,s;char name10,sex,m10,ap10,po10;cout<<" 请输入学生的信息"<<endl;cout<<"姓名 性别 出生年月 班级 学号 专业 英语成绩 数学成绩"<<endl;cin>>name>>sex>>birth>>c

40、l>>no>>m>>en>>math;Student stu(name,sex,birth,cl,no,m,en,math);stu.St_Display();cout<<" 请输入职工的信息"<<endl;cout<<"姓名 性别 出生年月 部门 职务 工资"<<endl;cin>>name>>sex>>birth>>ap>>po>>s;Employee emp(name,sex,bir

41、th,ap,po,s);emp.Em_Display();return 0;运行结果:遇到的问题和解决方法在本实验的第1题目中的坐标似乎没有用处;实验内容 实验6.3(1)(2)(3)(4)实验记录1. 程序:#include<iostream>const double pi=3.14;using namespace std;class Point double x,y;public:Point()Point(int xx,int yy)x=xx;y=yy;class Shapepublic:virtual double area()=0;class Rectangle :publ

42、ic Point,public Shapedouble len,wid;public:Rectangle(Point p,double l,double w)len=l;wid=w;virtual double area()return len*wid;class Circle :public Point,public Shapedouble rad;public:Circle(Point p,double r)rad=r;virtual double area()return pi*rad*rad;class Square :public Point,public Shapedouble l

43、en;public:Square(Point p,double l):len(l)/*len=l;*/virtual double area()return len*len;void out_area(Shape &s)cout<<s.area()<<endl;int main()int x,y,len,wid,rad;cin>>x>>y>>len>>wid;Point p1(x,y);Rectangle r1(p1,len,wid);out_area(r1);cin>>x>>y>&g

44、t;rad;Point p2(x,y);Circle c1(p2,rad);out_area(c1);cin>>x>>y>>len;Point p3(x,y);Square s1(p3,len);out_area(s1);getchar();return 0;运行结果:注解:1 2 3 4 1 2为输入的坐标 ,3 4为矩形的长和宽 ,12为面积 0 0 1 0 0为输入的坐标 ,1 为圆形的半径 ,3.14为面积 0 0 3 0 0为输入的坐标 ,3 为正方形的边长 , 9 为面积2.编写一个抽象类SHAPE,在此基础上派生出 Rectangle ,Cir

45、cle,二者都有GetArea()函数计算对象的面积,计算周长的函数GetPerim(); 完善类的功能与结构。#include<iostream>const double pi=3.14;using namespace std;class SHAPEpublic:virtual void GetArea()=0;virtual void GetPerim()=0;class Rectangle :public SHAPEdouble len,wid;public:Rectangle (double l,double w):len(l),wid(w)virtual void Get

46、Area()cout<<"矩形的面积:"<<len*wid<<endl;virtual void GetPerim()cout<<"矩形的周长:"<<2*(len+wid)<<endl;class Circle :public SHAPEdouble rad;public:Circle (double r):rad(r)virtual void GetArea()cout<<"圆的面积:"<<pi*rad*rad<<endl;v

47、irtual void GetPerim()cout<<"圆的周长:"<<2*pi*rad<<endl;void out_Area_Perim(SHAPE &s)s.GetArea();s.GetPerim();int main()int len,wid,r;cout<<"请输入矩形的长和宽:"cin>>len>>wid;Rectangle r1(len,wid);out_Area_Perim(r1);cout<<"请输入圆的边长:"cin&g

48、t;>r;Circle c1(r);out_Area_Perim(c1);return 0;运行结果:3.声明一个车(Vehicle)基类,有Run,Stop等成员函数,由此派生出自行车(Bicycle)类,汽车(Motorcar)类,从(Bicycle)和(Motorcar)派生出摩托车(Motorcycle)类,他们都有Run,Stop等成员函数。利用虚函数解决问题。#include<iostream>using namespace std;class Vehiclepublic:virtual void Run()=0;virtual void Stop()=0;cla

49、ss Bicycle :public Vehiclepublic:Bicycle ()virtual void Run()cout<<"bicycle run called"<<endl;virtual void Stop()cout<<"bicycle stop called"<<endl;class Motorcar :public Vehiclepublic:Motorcar ()virtual void Run()cout<<"motorcar run called"<<endl;virtual void Stop()cout<<"motorcar stop called"<<endl;class Motorcycle :public Motorcarpublic:Motorcycle (

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论