《C实验报告太原理工大学.doc》由会员分享,可在线阅读,更多相关《C实验报告太原理工大学.doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本科实验报告 课程名称: C+面向对象程序设计 实验项目: 实验地点: 明向校区行知楼B118 专业班级: 软件130x 学号: 201300xxxx 学生姓名: XXX 指导教师: 宋春花 2014年 4月 20日实验名称 实验一 C+基础实验目的和要求1. 熟悉基本的输入输出方法;2. 掌握函数的定义、调用和声明方法,函数的参数传递机制,函数嵌套调用和递归调用,内联函数,带默认形参的函数,重载函数;3. 理解名称空间的概念,掌握名称空间的使用;4. 熟悉const关键字的使用;5. 掌握内存的动态分配的概念和使用方法;6. 熟悉编译预处理命令;7. 掌握常用算法的实现(如穷举、迭代、递推等
2、)。实验内容1. 编写重载函数max1可分别求取2个整数、3个整数、2个双精度数、3个双精度数的最大值。2. 编程计算图形的面积。程序可计算圆形、长方形、正方形的面积,运行时先提求用户选择图形的类型,然后再要求用户对圆形输入半径值,对长方形输入长与宽,对正方形输入边长,计算出面积的值后,在屏幕上显示出来。主要仪器设备笔记本电脑实验记录(写出实验内容中1,2的程序代码和运行结果)实验1程序代码:#include stdafx.h#include iostreamusing namespace std;int max1(int x,int y);int max1(int x,int y,int z
3、);double max1(double x,double y);double max1(double x,double y,double z);int _tmain(int argc, _TCHAR* argv)int a=1,b=2,c=3;double d=1.1,e=2.2,f=3.3;coutmax1(a,b)endl;coutmax1(a,b,c)endl;coutmax1(d,e)endl;coutmax1(d,e,f)y?x:y;int max1(int x,int y,int z)int m;m=xy?x:y;return mz?m:z;double max1(double
4、x,double y)return xy?x:y;double max1(double x,double y,double z)double m;m=xy?x:y;return mz?m:z;运行结果:实验2程序代码:#include stdafx.h#include iostreamusing namespace std;const double PI=3.141592653;float x,y;double z;int _tmain(int argc, _TCHAR* argv)cout请输入图形类型:n(1:正方形;2:长方形;3:圆)m; switch(m) case(1): cout
5、x; cout正方形面积是: nx*xendl; break; case(2): coutxy; cout长方形的面积是:nx*yendl; break; case(3): coutz; cout圆面积是: nPI*z*zendl; break; default: cout输入错误!endl; return 0;运行结果:实验名称 实验二 类和对象实验目的和要求一 (1)掌握类的概念;(2)理解对象与类的关系,掌握对象的创建和使用;(3)掌握构造函数、析构函数的概念机使用方法;(4)理解构造函数与析构函数的调用过程;(5)掌握对象数组和对象指针;(6)理解类的组合。二 (1)了解静态对象的定义
6、和使用方法;(2)掌握静态数据成员和静态成员函数的定义和使用方法;(3)理解类的作用域、对象的作用域及生存周期;(4)掌握函数调用中参数的传递;(5)掌握常量类型;(6)掌握由原函数和友元类的定义及使用。实验内容1. 定义一个学生成绩Score,描述学生成绩的私有数据成员为学号(No)、姓名 (Name8)、数学(Math)、物理(Phi)、数据结构(Data)、平均分(Ave)。定义能输入学生成绩的公有成员函数Write(),能计算学生平均分的公有成员函数Average(),能显示学生成绩的公有成员函数Display()。在主函数中用Score类定义学生成绩对象数组s3。用Write()输入
7、学生成绩,用Average()计算每个学生的平均分,最后用Display()显示每个学生的成绩。No Name Math Phi Data Ave 1001 Zhou 80 70 60 1002 Chen 90 80 85 1003 Wang 70 75 892. 编写一个程序,设计一个类Tri,给定三角形的三条边x、y、z,包含一个友元函数计算三角形面积之和。主要仪器设备笔记本电脑实验记录(写出实验内容中1,2的程序代码和运行结果)实验1程序代码:#include stdafx.h#includeiostreamusing namespace std;class Scoreint No,Ma
8、th,Phi,Data,ave;char Name10;public:void Write(Score &b)cout请输入学号:b.No;cout请输入姓名:b.Name;cout请输入数学成绩:b.Math;cout请输入物理成绩:b.Phi;cout请输入数据结构成绩:b.Data;int Average(Score &a)a.ave=(a.Data+a.Math+a.Phi)/3;return a.ave;void Display()coutNotNametMathtPhitDatataveendl;int main ()Score s3;int i;for(i=0;i3;i+)si.
9、Write(si);si.Average(si);cout学号t姓名t数学t物理t结构t平均tendl;for(i=0;i3;i+)si.Display();运行结果:实验2程序代码:#includestdafx.h#includeiostream#includemath.husing namespace std;class Trifloat x,y,z;static float sum;public:float getsum()return sum;Tri(float x1,float y1,float z1)x=x1;y=y1;z=z1;friend void sum(Tri a);flo
10、at Tri:sum=0;void sum(Tri a)if(a.x+a.ya.z&a.x+a.za.y&a.y+a.za.x)cout不能构成三角形endl;elsefloat p=(a.x+a.y+a.z)/2;float s=sqrt(p*(p-a.x)*(p-a.y)*(p-a.z);Tri:sum+=s;int _tmain(int argc, _TCHAR* argv)Tri a(3,4,5),b(7,8,9),c(11,12,13);sum(a);cout一个三角形的面积为:a.getsum()endl;sum(b);cout两个三角形的面积之和为:b.getsum()endl;
11、sum(c);cout三个三角形的面积之和为:c.getsum()endl;运行结果实验名称 实验三 继承与派生实验目的和要求1. 理解继承与派生的概念;2. 掌握派生类定义格式与使用方法;3. 初步掌握派生类构造函数的定义与使用方法,理解构造函数的调用过程,及基类成员的初始化过程;4. 理解冲突、支配规则与赋值兼容性原则的概念。实验内容1. 定义描述矩形的类Rectangle,其数据成员为矩形的长(Length)与宽(Width)。成员函数为计算矩形面积的函数Area()与构造函数。再定义描述长方体高的类High,其数据成员为长方体高度H,其成员函数为构造函数。再由矩形类与高类多重派生出长方
12、体类Cuboid,其数据成员为体积Volume。成员函数为:构造函数、计算体积的函数Vol()、显示长、宽、高与体积的函数Show()。主函数中用长方体类定义长方体对象cub,并赋初始值(10,20,30),最后显示长方体的长、宽、高与体积。2. 定义个人信息类Person,其数据成员有姓名、性别、出生年月。并以Person为基类定义一个学生的派生类Student,增加描述学生的信息:班级、学号、专业、英语成绩和数学成绩。再由基类Person定义一个职工的派生类Employee,增加描述职工的信息:部门、职务、工资。编写程序实现学生与职工信息的输入与输出。主要仪器设备笔记本电脑实验记录(写出实
13、验内容中1,2的程序代码和运行结果)实验3程序代码:#include stdafx.h#include iostreamusing namespace std;const double PI=3.1415926;class Rectangle protected: float Length,Width; float Centerx,Centery; public: Rectangle(float x,float y,float l,float w) Centerx=x; Centery=y; Length=l; Width=w; float Area(void) return Length*W
14、idth; ;class Circle protected: float Radius; float Centerx,Centery; public: Circle(float x,float y,float r) Centerx=x; Centery=y; Radius=r; double Area(void) return Radius*Radius*PI; ;class Cuboid:public Rectangle,public Circle private: float High; double RVolume,CVolume; public: Cuboid(float x1,flo
15、at y1,float l,float w,float x2,float y2,float r,float h):Rectangle(x1,y1,l,w),Circle(x2,y2,r) High=h; void Volume(void) CVolume=Circle:Area()*High; RVolume=Rectangle:Area()*High; void Show(void) cout长方体的矩形坐标=(Rectangle:Centerx,Rectangle:Centery)endl; cout长方体的长=Lengtht宽=Widtht 高?=Highendl; Volume();
16、cout长方体的体积y=RVolumeendl; ;int main () Cuboid cub(10,10,10,20,30,30,10,10); cub.Show(); return 0;运行结果:实验2程序代码:#include stdafx.h#include #include using namespace std;class Person public:void ShowPerson(string strName,string Sex,int Year)cout 姓名: strNamet 性别: Sext出生年月:Yearendl;protected:string strName;
17、string Sex;int Year;class Student : public Personpublic:void ShowMsg(string StuNum,int Grade,string Major,int math,int english)cout班级:Grade班t 学号:StuNumt专业:Majorn数学成绩:matht英语成绩:englishendl;private:string StuNum;int Grade;string Major;int math,english;class Teacher : public Personpublic:void ShowMsg(s
18、tring TeaJob,string TeaMajor,string Pay)cout部门:TeaJobt 职务:TeaMajort工资:Payendl;private:string TeaJob;string TeaMajor;string Pay;int main()string a,b,c,d,j,k,n,o,q;int e=0,g=0,h=0,i=0,l=0;Person p;couta;coutb;coute;coutd;coutg;coutc;couth;couti;p.ShowPerson(a,b,e);Student s;s.ShowMsg(d,g,c,h,i);coutj;
19、coutk;coutl;coutn;couto;coutq;p.ShowPerson(j,k,l);Teacher t;t.ShowMsg(n,o,q);return 0;运行结果:实验名称 实验四 多态性实验目的和要求1. 掌握C+中运算符重载的机制和运算符重载的方式;2. 理解类型转换的必要性,掌握类型转换的使用方法;3. 理解多态性,掌握虚函数的设计方法;4. 学习使用Visual Studio调试虚函数。实验内容1. 定义描述字符串的类String,编写字符串运算符“+=”的重载函数,使运算符“+=”用于两个字符串联接操作,即用str1+=str2实现字符串函数strcat(str1,
20、str2)的操作功能。要求分别用成员函数与友元函数编写运算符重载函数。在主函数中定义字符串对象 s1(software and )与s2(hardware),进行s1+=s2的字符串联接,并输出s1、s2的值。有5个学生,每个学生有3门课的成绩,从键盘输入学生数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。2. 声明一个车(Vehicle)基类,有Run,Stop等成员函数,由此派生出自行车(Bicycle)类,汽车(Motorcar)类,从(Bicycle)和(Motorcar)派生出摩托车(Motorcycle)类,它们都有R
21、un,Stop等成员函数。利用虚函数解决问题。主要仪器设备笔记本电脑实验记录(写出实验内容1,2的程序代码和运行结果)实验1:程序代码:#includestdafx.h#include#includeusing namespace std;class String protected: int Length;char *S; public: String() S=0;Length=0; String(const char *s) Length=strlen(s); S=new charLength+1; strcpy(S,s); String() if(S) delete S; void Sh
22、ow() coutSendl; String operator+=(String &s) String t; t.Length=Length+s.Length; t.S=new chart.Length+1; strcpy(t.S,s.S); strcat(t.S,s.S); return t; ;void main (void)String s1(software),s2(hardware);s1.Show();s2.Show();s2+=s1;s2.Show();运行结果:实验2:#include stdafx.h#includeusing namespace std;class vehi
23、cle public:virtual void run();virtual void stop();void vehicle:run()void vehicle:stop ()class bicycle:virtual public vehicle public:void run();void stop();void bicycle:run()cout自行车在运行endl;void bicycle:stop ()cout自行车在停止endl;class car:virtual public vehicle public:void run();void stop();void car:run()cout汽车在运行endl;void car:stop ()cout汽车在停止endl;class motorcycle:public bicycle,public car public:void run();void stop();void motorcycle:run() cout摩托车在运行endl;void motorcycle:stop ()cout摩托车在停止run(); p-stop();p=&b; p-run(); p-stop();p=&d;p-run(); p-stop();return 0;运行结果:
限制150内