面向对象程序设计语言C++实验报告

上传人:e****s 文档编号:194931648 上传时间:2023-03-14 格式:DOC 页数:15 大小:167KB
收藏 版权申诉 举报 下载
面向对象程序设计语言C++实验报告_第1页
第1页 / 共15页
面向对象程序设计语言C++实验报告_第2页
第2页 / 共15页
面向对象程序设计语言C++实验报告_第3页
第3页 / 共15页
资源描述:

《面向对象程序设计语言C++实验报告》由会员分享,可在线阅读,更多相关《面向对象程序设计语言C++实验报告(15页珍藏版)》请在装配图网上搜索。

1、C+实验报告 蔺子杰 10021225李世斌 10021229实验一一、实验目的1、了解在系统上如何编辑、编译、连接和运行一个C+程序;2、运行简单的C+程序,初步了解C+源程序的结构、特点;3、掌握C+中输入/输出、函数重载、引用的概念及用法。二、实验原理在C语言中,函数名必须是唯一的。C+支持函数(名)重载,即在同一个作用域内多个函数可以共用一个函数名。被重载的函数称为重载函数。函数重载要求:重载函数至少在参数个数或参数类型上与已定义的函数不同。例如:square ( int i );square ( float i );square ( double i );三、实验内容 1. 编一个程

2、序,对任意输入的两个数据进行求和运算,数据类型可以int型float型。 int sum( int, int);float sum( float, float);2. 任意输入三个数,将这三个数由大到小输出四、实验结果 内容1的截图 内容2 的截图 五、源代码 #include stdafx.h#include iostream.hint Sum(int num1,int num2);float Sum(float num1,float num2);void P1();void P2();void Compare(float &a,float &b,float&c);int main(int

3、argc, char* argv)int choice=0;int isCorrect=0;while(isCorrect=0)coutplease input the number of the practicechoice;switch(choice)case 1:P1();isCorrect=1;break;case 2:P2();isCorrect=1;break;default :coutwrong Number!endl;isCorrect=0;return 0;void P1()float num1=0;float num2=0;int num11=0;int num12=0;f

4、loat sum2;int sum1; coutplease input the first numbernum1;coutplease input the second numbernum2;num11=(int)num1;num12=(int)num2; if(num11num1&num12num2)sum2=Sum(num1,num2);coutSum=sum2endl;elsesum1=Sum(num11,num12);coutSum=sum1num1;cinnum2;cinnum3;float &num11=num1;float &num12=num2;float &num13=nu

5、m3;Compare(num11,num12,num13);void Compare(float &a, float &b, float &c)float temp=0;if(a=b)if(b=c)temp=b;b=c;c=temp;coutabc=a)temp=c;c=a;a=temp;coutabcendl;elsetemp=a;a=b;b=temp;if(b=c)temp=b;b=c;c=temp;coutabc=a)temp=a;a=b; b=temp;coutabcendl;coutabcendl; 实验二一、实验目的1、掌握声明类的方法,类和类的成员的概念以及定义对象的方法;2、初

6、步掌握用类和对象编制基于对象的程序;3、学习检查和调试基于对象的程序。二、实验原理类定义的一般格式为class 类名 public : 数据成员和成员函数; protected: 数据成员和成员函数; private: 数据成员和成员函数; ;类的成员函数也是函数的一种,它与以前介绍的普通函数用法基本一样;成员函数由函数头和函数体组成,函数头包括函数名、函数的参数及函数的类型。函数体主要说明函数实现的功能;成员函数可以在类体中定义,也可以在类体中声明类成员函数,成员函数的实现在类外定义。三、实验内容1. 新建一个矩形类,其中包括输入,计算体积,输出。并计算三个矩形面积。2. 建立一个数组对象,

7、内放5个学生的数据(学号、成绩),用指向对象的指针做函数参数,并输出第1、3、5的学号。四、源代码 1. 内容1的源代码class Rectangle public: void display(); int computeVolume(); void Set_Data();private: int length; int width; int height; int volume;#include rectangle.h#include iostream.hvoid Rectangle:display() coutthis rectangles volume isvolumeendl;void

8、 Rectangle:Set_Data()coutplease enter your lengthlength;coutplease enter your widthwidth;coutplease enter your heightheight;int Rectangle:computeVolume() volume=length*width*height; return volume;/ project2.cpp : Defines the entry point for the console application./#include stdafx.h#include ioStream

9、.h#include rectangle.hint main() Rectangle r1; r1.Set_Data(); r1 puteVolume(); r1.display(); Rectangle r2; r2.Set_Data(); r2 puteVolume(); r2.display(); Rectangle r3; r3.Set_Data(); r3 puteVolume(); r3.display(); return 0;2. 内容2的源代码 class Student public: Student(int StuNum,int StuScore); void displa

10、y(); void Set_Data();private: int num; int score; /char name20; /char sex;#include student.h#include iostream.hStudent:Student(int StuNum,int StuScore) num=StuNum; score=StuScore;void Student:display() coutnum:numendl; coutscore:scoreendl; /coutsex:sex”运算符来调用类A中的私有成员。在C语言中,函数名必须是唯一的。C+支持函数(名)重载,即在同一

11、个作用域内多个函数可以共用一个函数名。被重载的函数称为重载函数。函数重载要求:重载函数至少在参数个数或参数类型上与已定义的函数不同。例如:square ( int i );square ( float i );square ( double i );三、实验内容1.理解源程序中友元函数的使用;将本程序中的Time类声明为Date类的友元类,通过Time类中的display函数引用Date类对象的私有数据,输出年、月、日和时、分、秒。2.声明一个复数类Complex,重载运算符“+”、“”、“”、“”,使之能用于复数的加、减、乘、除,运算符重载函数作为Complex类的成员函数。编程序,分别求两

12、个复数之和差积商。四、实验结果 内容1的截图 内容2 的截图 五、源代码#include using namespace std;class Date;class Time public: Time(int,int,int);void display(Date &); private:int hour;int minute;int sec; ;class Date friend class Time; public:Date(int,int,int); private:int month;int day;int year;Time:Time(int h,int m, int s) hour=h

13、; minute=m; sec=s;void Time:display(Date &d)coutd.month/d.day/d.yearendl; couthour/minute/secendl; Date:Date(int m,int d,int y) month=m; day=d; year=y;int main( ) Time tl(10,13,56); Date dl(12,25,2004); tl.display(dl); return 0; #include class Complex private: double repart;double impart; public: Co

14、mplex(double r=0,double i=0)repart=r;impart=i;Complex operator + (Complex &c1) Complex c; c.repart=repart+c1.repart; c.impart=impart+c1.impart; return c;Complex operator - (Complex &c1) Complex c; c.repart=repart-c1.repart; c.impart=impart-c1.impart; return c; Complex operator * (Complex &c1) Comple

15、x c; c.repart=repart*c1.repart-impart*c1.impart; c.impart=repart*c1.impart+impart*c1.repart; return c;Complex operator / (Complex &c1) Complex c; c.repart=(repart*c1.repart+impart*c1.impart)/(c1.repart*c1.repart+c1.impart*c1.impart); c.impart=(impart*c1.repart-repart*c1.impart)/(c1.repart*c1.repart+

16、c1.impart*c1.impart); return c;void display()cout(repart,impart)endl;void main() Complex c1(1,2),c2(3,4); coutc1=(1,2),c2=(3,4)endl; (c1+c2).display(); (c1-c2).display(); (c1*c2).display(); (c1/c2).display();实验四一、实验目的1、了解虚函数的作用和使用方法;2、了解静态关联和动态关联的概念和用法;3、了解纯虚函数和抽象类的概念和用法。4、深入理解C+的输入输出的含义和其实现方法二、实验原理

17、类的继承层次结构中,不同的层次中可以出现名字、参数个数和类型都相同而功能不同的函数,就是虚函数。虚函数的作用:允许在派生类中重新定义与基类同名的函数;并可通过基类指针或引用来访问基类和派生类中的同名函数。虚函数成员的声明语法:virtual 函数返回类型 函数名(形参表) 函数体 纯虚函数:是在声明虚函数时被“初始化”为0的函数。声明纯虚函数的一般形式是:virtual 函数类型 函数名 (参数表列)= 0;如果声明了一个类,它们不用来生成对象,而作为基类去建立派生类。该类作为一种基本类型提供给用户,用户在此基础上定义出功能各异的派生类。这种不用来定义对象而只作为一种基本类型用作继承的类,称为

18、抽象类(abstract class)。凡是包含纯虚函数的类都是抽象类。抽象类的作用:为一个类族的共同基类,即,为一个类族提供一个公共接口。如果在抽象类派生出的新类中对基类的所有纯虚函数进行了定义,那么函数就被赋予功能,可被调用,派生类就不是抽象类如果派生类中没有对所有纯虚函数进行定义,则此派生类仍然是抽象类,不能用来定义对象。三、实验内容1.声明抽象基类Shape,由它派生出5个派生类:Circle(圆形,半径:12.6)、Square(正方形,边长:3.5)、Rectangle(矩形,长:4.5,宽:8.4)、Trapezoid(直角梯形,上底:2.0,下底:4.5,高:3.2)Trian

19、gle(直角三角形,宽:4.5,高:8.4)。用虚函数(要求用基类指针)分别计算几种图形的面积,并求它们之和。2.输入三角形的三边a, b, c, 计算三角形的面积公式是:编写程序,任意输入a, b, c,,检查输入的a, b, c是否满足三角形的形成条件:如满足,输出三角形面积;如果不满足,由cout输出有关错误信息,并进行重新输入,直至a, b, c能满足三角形形成条件后,给出三角形面积。四、实验结果 内容1的截图 内容2的截图 五、源代码#include const double PI=3.1415926;class Shape public: virtual double area()

20、=0;class Circle:public Shape public: Circle(double r=0)radius=r; double area(); protected: double radius;class Square:public Shape public: Square(double l=0)a=l; double area(); protected: double a;class Rectangle:public Shape public: Rectangle(double l=0,double w=0)length=l;width=w; double area(); p

21、rotected: double length,width;class Trapezoid:public Shape public: Trapezoid(double s=0,double l=0,double h=0)shortbottom=s;longbottom=l;height=h; double area(); protected: double shortbottom,longbottom,height;class Triangle:public Shape public: Triangle(double b=0,double h=0)bottom=b;height=h; doub

22、le area(); protected: double bottom,height;double Circle:area()return PI*radius*radius;double Square:area()return a*a;double Rectangle:area()return length*width;double Trapezoid:area()return (shortbottom+longbottom)*height/2;double Triangle:area()return bottom*height/2;int main() double sum=0; Circl

23、e c(12.6); Square s(3.5); Rectangle r(4.5,8.4); Trapezoid tra(2.0,4.5,3.2); Triangle tri(4.5,8.4); Shape *p; p=&c; coutarea of Circle:area()area(); p=&s; coutarea of Square:area()area(); p=&r; coutarea of Rectangle:area()area(); p=&tra; coutarea of Trapezoid:area()area(); p=&tri; coutarea of Triangl

24、e:area()area(); coutsum of area:sumn; return 0;#include #include int iflaw(double a,double b,double c)double temp; if(ab) if(bc);else temp=b; b=c; c=temp; else temp=a;a=b;b=temp;if(bc);else temp=b; b=c; c=temp;if(ab);else temp=a; a=b; b=temp; if(b+c)=a) cout=b) coutabc; s=iflaw(a,b,c); if(s=2) continue;else area=calculate(a,b,c); coutarea; break;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!