C++实验报告模版_第1页
C++实验报告模版_第2页
C++实验报告模版_第3页
C++实验报告模版_第4页
C++实验报告模版_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、本科实验报告课程名称: 面向对象的程序设计 实验项目: 实验地点: 专业班级: 物联网1403 学号: 学生姓名: 指导教师: 宋春花 2015年 5月 10日实验一 C+基础一、实验目的: (1)熟悉Visual Studio2010或Visual C+的编程环境; (2)掌握内联函数,带默认形参的函数,重载函数的定义和使用;理解函数的参数传递机制; (3)理解命名空间的概念,掌握命名空间的使用; (4)掌握引用的概念以及引用作为函数参数和函数返回值的使用方法; (5)掌握内存的动态分配的概念和使用方法; (6)掌握文件的打开、关闭以及读写操作。 二、实验要求 (1)按照实验内容编写程序,并

2、调试程序,并给出测试数据和实验结果; (2)整理上机步骤,总结经验和体会; (3)完成实验报告和上交程序。三、实验设备 PC机。四、实验内容 (1)运行下面的程序,观察变量x、y的值。#includeusing namespace std;void fnl(int z=5);int x=1,y=2;int main() coutBeginendl; coutx=xendl; couty=yendl; coutEvaluate x and y in main()endl; int x=10,y=20; coutx=xendl; couty=yendl; coutStep into fnl()en

3、dl; fnl(); fnl(10); coutBack in mainendl; coutx=xendl; couty=yendl; return 0;void fnl(int z) static int x=100; int y=200;cout x=xendl; couty=yendl; x=x+y+z;结果为: (2)编写重载函数max1可分别求取2个整数、3个整数、2个双精度数、3个双精度数的最大值。程序为:#include stdafx.h#includeusing namespace std;int add(int x,int y);int add(int x,int y,int

4、 z);double add(double x,double y);double add(double x,double y,double z);int main(int argc, char* argv)int a,b,c;double x,y,z; cout输入3个整数abc; add(a,b);add(a,b,c);cout输入3个浮点数xyz;add(x,y);add(x,y,z);return 0;int add(int x,int y) if(xy) coutmax2=xendl; else coutmax2=yy) i=x; else i=y; if(iz) coutmax3=i

5、endl; else coutmax3=zy) coutmax2=xendl; else coutmax2=yy) i=x; else i=y; if(iz) coutmax3=iendl; else coutmax3=zendl; return 0; 结果为: (3)用new操作为一个包含10个整数的数组分配内存,输入若干个值到数组中,分别统计其中正数和负数的个数后再用delete操作释放内存。程序为:#include stdafx.h#includeusing namespace std;int main(int argc, char* argv)int *p,i,z,f;p=new in

6、t10; for(i=0;ipi;z=0;f=0; for(i=0;i0) z+; else f+; cout正数个数为:zendl;cout负数个数为:fendl;delete p;return 0; 结果为: (4)编程计算图形的面积。程序可计算圆形、长方形、正方形的面积,运行时先提求用户选择图形的类型,然后,再要求用户对圆形输入半径值,对长方形输入长与宽,对正方形输入边长,计算出面积的值后,在屏幕上显示出来。程序为:#include stdafx.h#includeusing namespace std;const double PI=3.14159;void areay();void

7、areac();void areaz();int main(int argc, char* argv) char n; cout圆,c-长方形,z-正方形,输入要选择的图形:n;switch(n)case y: areay(); break;case c:areac();break;case z:areaz();break;default:cout输入错误!endl;return 0; void areay() int r; coutr; cout圆面积为:PI*r*rendl;void areac() int x,y; coutxy; cout长方形面积为:x*yendl;void area

8、z() int x; coutx; cout正方形面积为:x*xendl;结果为:五、实验心得(1)注意函数重载必须是形参个数或类型不同与返回值无关。(2)释放为数组动态分配的内存用delete p;语句。(3)注意静态变量所占内存在主函数结束时才释放的。实验二 类与对象一、实验目的(1) 掌握类和对象的定义使用方法; (2) 掌握构造函数、析构函数的定义、使用方法、调用过程;(3) 掌握对象数组和对象指针;(4) 理解类的组合;(5) 掌握静态数据成员和静态成员函数的定义和使用方法;(6) 掌握友元函数和友元类的定义及使用二、实验要求 (1)完善、编写程序,并调试程序,要给出测试数据和实验结

9、果; (2)整理上机步骤,总结经验和体会; (3)完成实验报告和上交程序。3、 实验设备 PC机。4、 实验内容(1、2、3中选择2个题,4、5、6中选择2个题) (1)定义一个复数类Complex,复数的实部Real与虚部Image定义为私有数据成员。用复数类定义复数对象c1、c2、c3,用默认构造函数将c1初始化为c1=20+40i ,将c2初始化为c2=0+0i,用拷贝构造函数将c3初始化为c3=20+40i。用公有成员函数Dispaly()显示复数c1、c2与c3 的内容。程序为:#includeusing namespace std;class Complexprivate:int

10、real,image;public:Complex(int r,int i) real=r; image=i;Complex(Complex &c) real=c.real; image=c.image;void display(Complex &c) cout(c.real,c.imagei)endl;int main() Complex c1(20,40),c2(0,0); Complex c3(c1); c1.display(c1); c2.display(c2); c3.display(c3); return 0;结果为: (2)定义一个学生成绩类Score,描述学生成绩的私有数据成员

11、为学号(No)、姓名(Name8)、高等数学(Math)、大学物理(Phi)、数据结构(Data)、平均分(ave)。定义能输入学生成绩的公有成员函数Write(),能计算学生平均分的公有成员函数Average(),能显示学生成绩的公有成员函数Display()。在主函数中用Score类定义学生成绩对象数组s3。用Write()输入学生成绩,用Average()计算每个学生的平均分,最后用Display()显示每个学生的成绩。实验数据:No Name Math Phi Data Ave1001Zhou 80 70 601002Chen90 80 851003Wang70 75 89程序为:#i

12、ncludeusing namespace std;class Scoreprivate:int No; char name8; int Math,Phi,Data,ave;public:void Write(Score &c) cinc.Nc.Mathc.Phic.Data; void Average(Score &c) c.ave=(c.Math+c.Phi+c.Data)/3; void Display(Score &c) coutc.No c.Math c.Phi c.Data c.aveendl;int main() Score s3; int i; ch

13、ar n; cout输入学生学号、姓名、数学成绩、物理成绩、数据结构成绩:endl; for(i=0;i3;i+) si.Write(si); si.Average(si); coutNo Name Math Phi Data Aveendl; for(i=0;i3;i+) si.Display(si); return 0;结果为: (3)定义一个矩形类Rectangle,矩形的左上角(Left,Top)与右下角坐标(Right,Bottom)定义为保护数据成员。用公有成员函数Diagonal()计算出矩形对角线的长度,公有成员函数Show()显示矩形左上角与右下角坐标及对角线长度。在主函数中

14、用new运算符动态建立矩形对象r1,初值为(10,10,20,20)。然后调用Show()显示矩形左上角与右下角坐标及对角线长度。最后用delete运算符回收为矩形动态分配的存储空间。程序为:#include#includeusing namespace std;class Rectangleprotected:int Left,Top;int Right,Bottom;public:float Dia;Rectangle(int l,int b,int r,int t) Left=l;Top=t;Right=r;Bottom=b; int Diagonal(Rectangle *r1) fl

15、oat D;D=(r1-Top-r1-Bottom)*(r1-Top-r1-Bottom)+(r1-Right-r1-Left)*(r1-Right-r1-Left); float T=sqrt(D); return Dia=T;void Show(Rectangle *r1) cout(Left,Top)=(Left,Top)endl; cout(Right,Bottom)=(Right,Bottom)endl; coutDiagonal=DiaDiagonal(r1); r1-Show(r1); delete r1; return 0;结果为: (4) 设计一个Dog类,它用静态数据成员D

16、ogs记录Dog的个数。静态成员函数GetDogs用来存取Dogs。设计并测试此类。程序为:#include stdafx.h#includeusing namespace std;class Dogprivate: static int Dogs;public:Dog(int a) Dogs=a; static void GetDogs(Dog d) coutDogs=Dogsendl; ;int Dog:Dogs=0;int main(int argc, char* argv)Dog d(5);Dog:GetDogs(d);return 0;结果为: (5)编写一个程序,设计一个类Tri,

17、给定三角形的三条边x、y、z,包含一个友元函数计算三角形面积之和。程序为:#include#includeusing namespace std;class Tri int x; int y; int z;public: static float sum;Tri(int a,int b,int c) x=a; y=b; z=c; friend int Area(Tri &t) float s; s=(t.x+t.y+t.z)/2; float n; n=s*(s-t.y)*(s-t.x)*(s-t.z); float A=sqrt(n); t.sum+=A; return 0;float Tr

18、i:sum=0;int main()Tri t(4,5,3),a(8,10,6),c(4,5,3);int i;couti;switch (i)case 1:Area(t); couti个三角形面积和=t.sumendl;break;case 2:Area(t);Area(a);couti个三角形面积和=t.sumendl;break;case 3:Area(t);Area(a);Area(c);couti个三角形面积和=t.sumendl; break;default:coutWrong!endl;return 0;结果为: (6)设计一个程序,其中3个类CBabk、BBabk、GBank分

19、别为中国银行类、工商银行类和农业银行类。每个类都包含一个私有数据balance,用于存放储户在该行的存款数,另一个友元函数total用于计算储户在这3家银行中的总存款数。程序为:#include stdafx.h#includeusing namespace std;static int sum=0;class CBackprivate:int balance;public:CBack(int c) balance=c;friend void total(CBack& c) sum+=c.balance;class BBackprivate:int balance;public: BBack(

20、int b) balance=b; friend void total(BBack& b) sum+=b.balance; ;class GBackprivate:int balance;public:GBack(int g) balance=g;friend void total(GBack& g) sum+=g.balance; ;int main(int argc, char* argv)int c,b,g;coutcbg;CBack C(c);total(C);BBack B(b);total(B);GBack G(g);total(G);cout总存款为:sumendl;return

21、 0;结果为:五、实验心得(1)静态成员不可以在类内的构造函数中初始化。(2)静态成员函数可以通过对象来引用菲静态成员。(3)求三角形面积用到海伦公式S=(x+y+z)/2 ,T=S*(S-x)*(S-y)*(S-z),V=sqrt(T)。(4)编程过程要仔细。实验3 继承与派生一、实验目的(1)理解继承与派生的概念;(2)掌握派生类定义格式与使用方法;(3)掌握掌握派生类构造函数的定义与使用方法,理解构造函数的调用过程,及基类成员的初始化过程;(4)掌握虚基类的定义和使用。二、实验要求 (1)完善、编写程序,并调试程序,要给出测试数据和实验结果; (2)整理上机步骤,总结经验和体会; (3)

22、完成实验报告和上交程序。三、实验设备 PC机。4、 实验内容 (1)完善程序并调试运行。class Person char strName10; int nAge; public: Person(char* name,int age) strcpy(strName, name); nAge = age; coutconstructor of person strNameendl; Person() coutdeconstrutor of person strNameendl; ; class Employee : public Person char strDept20; Person Wan

23、g; public: Employee(char *name, int age, char *dept, char *name1, int age1) : Person(name,age) , Wang(name1,age1) strcpy(strDept, dept); coutconstructor of Employeeendl; Employee() coutdeconstrucor of Employeeendl; ; int main()补充函数体程序为:#include stdafx.h#include#includeusing namespace std;class Perso

24、n char strName10; int nAge;public:Person(char *name,int age) strcpy(strName,name); nAge=age; coutconstructor of person:strNameendl;Person() coutdeconstrutor of person:strNameendl;class Employee:public Person char strDept20; Person Wang;public:Employee(char *name,int age,char *dept,char *name1,int ag

25、e1): Person(name,age),Wang(name1,age1) strcpy(strDept,dept);coutconstrutor of Employeeendl; Employee() coutdeconstrutor of Employeeendl;int main(int argc, char* argv)char *N=李华,*D=勤工部门,*Q=张三;Employee E(N,39,D,Q,35);return 0;结果为: (2) 定义描述职工档案的类Archives,私有数据成员为职工号(No)、姓名(Name8)、性别(Sex)、年龄(Age)。成员函数有:构

26、造函数、显示职工信息的函数Show()。再由职工档案类派生出职工工资类Laborage,在职工工资类Laborage中新增数据成员:应发工资(SSalary)、社保金(Security)、实发工资(Fsalary),其成员函数有:构造函数,计算实发工资的函数Count(),计算公式为:实发工资=应发工资社保金。显示职工档案及工资的函数Display()。在主函数中用Laborage类定义职工对象lab,并赋初始值(1001,”Cheng”,M,21,2000,100),然后显示职工档案与工资。程序为:#include#includeusing namespace std;class Archi

27、vesprivate:int No;char name8;char Sex;int Age;public:Archives(int N,char *n,char s,int a) No=N; strcpy(name,n); Sex=s; Age=a; void Show() cout姓名:nameendl; cout性别:Sexendl; cout编号:Noendl; cout年龄:Ageendl;class Laborage: public Archivesprivate:int SSalary;int Security;public:int Fsalary;Laborage(int N,c

28、har *n,char S,int A,int SS,int Se):Archives(N,n,S,A) SSalary=SS; Security=Se; int Count(Laborage& L) Fsalary=SSalary-Security; return Fsalary;void Display() Archives:Show(); cout应发工资:SSalaryendl; cout社保金:Securityendl; cout实发工资:Fsalaryendl;int main() Laborage La(1001,cheng,N,21,2000,100); La.Count(La

29、); La.Display(); return 0;结果为: (3)定义个人信息类Person,其数据成员有姓名、性别、出生年月。并以Person为基类定义一个学生的派生类Student,增加描述学生的信息:班级、学号、专业、英语成绩和数学成绩。再由基类Person定义一个职工的派生类Employee,增加描述职工的信息:部门、职务、工资。编写程序实现学生与职工信息的输入与输出。程序为:#include#includeusing namespace std;class Personprivate:string name;string sex;int year;int month;public:

30、Person(string n,string s,int y,int m) name=n; sex=s; year=y; month=m;void show() coutname sex year.month; ;class Student:public Personprivate:int grade;int number;string major;int Einglish;int Math;public:Student(string na,string s,int y,int mo,int g,int nu,string ma,int E,int M):Person(na,s,y,mo) g

31、rade=g; number=nu; major=ma; Einglish=E; Math=M;void display() Person:show(); cout grade number major Einglish Mathendl;class Employee:public Personprivate:string branch;string post;int wage;public:Employee(string na,string s,int y,int mo,string b,string p,int w):Person(na,s,y,mo) branch=b; post=p;

32、wage=w;void display() Person:show(); cout branch post wageendl;int main() string na,se,ma,br,po; int ye,mo,gr,nu,E,M,wa; cout输入一学生姓名,性别,出生年月,班级,学号,专业,英语成绩,数学成绩:naseyemogrnumaEM; cout姓名 性别 出生年月 班级 学号 专业 英语成绩 数学成绩endl; Student st(na,se,ye,mo,gr,nu,ma,E,M); st.display(); cout输入一职工姓名,性别,出生年月,部门,职务,工资:na

33、seyemobrpowa; cout姓名 性别 出生年月 部门 职务 工资endl; Employee em(na,se,ye,mo,br,po,wa); em.display(); return 0;结果为:五、实验心得(1)char name8;在编构造函数是要用指针作为形参并且应用到了strcpy(name,n);语句。(2)假如基类中有构造函数派生类构造函数中也要有基类成员。(3)使用作用于标示符和使用同名覆盖原则可消除二义性。实验四 多态性一、实验目的(1)掌握C+中运算符重载的机制和运算符重载的方式;(2)理解类型转换的必要性,掌握类型转换的使用方法;(3)理解多态性,掌握虚函数的

34、设计方法;(4)学习使用Visual Studio调试虚函数。二、实验要求 (1)完善、编写程序,并调试程序,要给出测试数据和实验结果; (2)整理上机步骤,总结经验和体会; (3)完成实验报告和上交程序。三、实验设备 PC机。四、实验内容 (1)编写一个抽象类SHAPE,在此基础上派生出Rectangle和Circle,二者都有GetArea()函数计算对象的面积,计算周长的函数GetPerim();完善类的功能与结构。程序为:#includeconst double PI=3.14159;using namespace std;class SHAPEpublic:virtual void

35、GetPerim()=0;virtual void GetArea()=0; ;class Rectangleprivate:int L;int W;public:void input(Rectangle &R) L=R.L; W=R.W; coutR.LR.W;virtual void GetArea() int area; area=L*W; cout矩形面积为:areaendl;virtual void GetPerim() int perim; perim=2*(L+W); cout矩形周长为:perimendl;class Circleprivate:int R;public:voi

36、d input(Circle &C) R=C.R; coutC.R;virtual void GetArea() double area; area=PI*R*R; cout圆面积为:areaendl;virtual void GetPerim() double perim; perim=2*PI*R; cout圆周长为:perimendl;int main() Rectangle R; Circle C; R.input(R); R.GetArea(); R.GetPerim(); C.input(C); C.GetArea(); C.GetPerim(); return 0;结果为: (2

37、)声明一个车(Vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(Bicycle)类、汽车(Motorcar)类,从(Bicycle)和(Motorcar)派生出摩托车(Motorcycle)类,它们都有Run、Stop等成员函数。利用虚函数解决问题。程序为:#include stdafx.h#includeusing namespace std;class Vehiclepublic:virtual void Run()=0;virtual void Stop()=0;class Bicycle:virtual public Vehicleprivate:int spade;public:Bicycle(int s) spade=s; virtual void Run() coutRun Bicycle:spadeendl; virtual void Stop() coutStop Bicycleendl;class Motor

温馨提示

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

评论

0/150

提交评论