C写一个日期类Date_第1页
C写一个日期类Date_第2页
C写一个日期类Date_第3页
C写一个日期类Date_第4页
C写一个日期类Date_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、写一个日期类Date,(1)定义私有数据成员年、月、日;(2)定义公有成员函数,(a)void setDate(int y,int m,int d);/要求对数据成员赋值;(b)void output();/要求按年-月-日输出;(c)void IsLeap();/判断年份是否是闰年;(d)void addOneday();/加上一天后的日期。using namespace std;#include<iostream>class Dateprivate:int year,month,day;public:void setDate(int y,int m,int d)year=y;m

2、onth=m;day=d;void output()cout<<year<<"-"<<month<<"-"<<day<<endl;void IsLeap()if(year%400=0|(year%4=0&&year%100!=0)cout<<"是闰年"<<endl;elsecout<<"不是闰年"<<endl;void addOneday()if(month=2&&

3、day=29)|(year%4!=0|(year%100=0&&year%400!=0)&&month=2&&day=28)day=1;month+; else if(month=1|month=3|month=5|month=7|month=8|month=10| month=12)if(month=12&&day=31)year+;month=1;day=1;else if(day=31)month+;day=1;else if(month=4|month=6|month=9|month=11)&&day=30

4、)month+;day=1;elseday+;cout<<year<<"-"<<month<<"-"<<day<<endl;void main()Date a;a.setDate(2000,2,28);a.output();a.IsLeap();a. addOneday();-作业2,设计圆类实现圆类的成员函数,并在主函数中进行测试。class Circle /圆类 private: double radius; /半径 public: /以下是公有成员函数void SetRadiu

5、s (double r) ; / 设置半径double CalculateArea() ; / 求面积double CalculateCircumference(); / 求周长double GetRadius () ; / 获取半径void Print() ; /输出半径;using namespace std;#include<iostream>class Circleprivate: double radius; public: void SetRadius (double r)radius=r;double CalculateArea() return radius*rad

6、ius*3.14;double CalculateCircumference()return 2*3.14*radius;double GetRadius () return radius;void Print() cout<<"半径:"<<radius<<endl;void main()Circle a;a.SetRadius(5);cout<<"面积"<<a.CalculateArea()<<endl;cout<<"周长"<<a.Cal

7、culateCircumference()<<endl;cout<<"获取半径"<<a.GetRadius()<<endl;a.Print();-(1) 数据成员有:横坐标double x、纵坐标double y;(2) 提供两个构造函数:无参构造函数将数据成员初始化为(0,0),有参构造函数利用参数对数据成员赋值;(3) 提供拷贝构造函数;(4) 成员函数void moveto(double a,double b),表示点移动到新的坐标位置(a,b);(5) 成员函数void display( ),输出点的坐标;(6) 友元

8、函数 double distance(CPoint &p1,CPoint &p2),求两点的距离;(求平方根sqrt函数math.h中);(7) 定义主函数,完成点类的测试。#include<iostream.h>#include<math.h>class CPointprivate:double x,y;public:CPoint(double x,double y)this->x=x;this->y=y;CPoint()x=0;y=0;CPoint(const CPoint&p)x=p.x;y=p.y;void moveto(do

9、uble a,double b)x=a;y=b;void display()cout<<"("<<x<<","<<y<<")"<<endl;friend double distance(CPoint &p1,CPoint &p2)double temp=sqrt(p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);return temp;void main()CPoint a(0,0),b(3,4);cou

10、t<<"距离:"<<distance(a,b)<<endl;a.moveto(2,2);a.display();CPoint c(b);c.display();/1)定义基类CMathA,有保护数据成员3个,分别为三个整数,公有成员函数3个,分别是有参构造函数、求这三个数的最大值,和最小值。/(2)定义派生类CMathB,公有继承CMathA,私有数据成员2个,分别是两个整数,公有成员函数3个,分别是有参构造函数(别忘记调用基类有参构造函数)、求5个数据成员的和,与积。/(3)定义主函数,完成基类与派生类所有成员函数的测试。using n

11、amespace std;#include<iostream>class CMathAprotected:int x,y,z;public:CMathA(int a,int b,int c)x=a;y=b;z=c;void max()int max;if(x>y)max=x;elsemax=y;if(max<z)max=z;cout<<"最大值:"<<max<<endl;void min()int min;if(x<y)min=x;elsemin=y;if(min>z)min=z;cout<<

12、;"最小值:"<<min<<endl;class CMathB:public CMathAprivate: int m,n;public:CMathB(int a,int b,int c,int d,int e):CMathA(a,b,c)m=d;n=e;void sum()int temp=x+y+z+m+n;cout<<"和:"<<temp<<endl;void multiply()int tem=x*y*z*m*n;cout<<"乘积:"<<te

13、m<<endl;void main()CMathA a(1,3,2);a.max();a.min();CMathB b(1,3,2,4,5);b.multiply();b.sum();-(1)编写点类Point,包括两个私有数据成员double x,y表示横纵坐标,成员函数包括两个分别是Point(double x,double y);/构造函数和Point(double x,double y);/显示函数(2)编写几何图形的类Circle,包括两个属性:圆心Point center;和半径double R;成员函数包括:圆心位置获取函数Point GetCenter();半径获取

14、函数double GetR()、半径设置函数void SetR(double r)、圆的位置移动函数void MoveTo(Point p2);以及圆的信息打印函数void displayCircle()。(3)编写主函数,完成圆类中所有成员函数的测试。using namespace std;#include<iostream>class Pointprivate:double x,y;public:Point(double a,double b)x=a;y=b;void disPlay()cout<<"圆心是:("<<x<<

15、","<<y<<")"<<endl;class Circleprivate:double r;Point center;public:Circle(double r,Point p1):center(p1)this->r=r;Point GetCenter()return center;void SetR(double r)this->r=r;double GetR()return r;void displayCircle()center.disPlay();cout<<"半径:&qu

16、ot;<<r<<endl;void MoveTo(Point p2)center=p2;void main()Point p1(2,7),p2(3,7);Circle cc(9,p1);cc.displayCircle();cc.MoveTo(p2);cc.displayCircle();cout<<cc.GetR()<<endl;-1设计平面坐标系中的点类CPoint:(1) 私有数据成员有:横坐标double x、纵坐标double y;(2) 公有提供两个构造函数:无参构造函数将数据成员初始化为(0,0),有参构造函数利用参数对数据成员赋值

17、;(3) 公有提供拷贝构造函数;(4) 公有成员函数double GetX(),求点的横坐标;(5) 公有成员函数double GetY(),求点的纵坐标;2设计线类(1) 私有数据成员有:斜率和截距;(2) 公有提供两个有参构造函数:CLine(double k,double b);CLine(CPoint p1,CPoint p2)(3) 公有成员函数double GetK(),求直线的斜率(4) 公有成员函数bool IncludePoint(CPoint p1),判断一个点是否在直线上;(5) 公有成员函数void Display(),显示直线方程。3定义主函数,完成线类所有测试。us

18、ing namespace std;#include<iostream>class CPointprivate:double x,y;public:CPoint(double x,double y)this->x=x;this->y=y;CPoint()x=0;y=0;CPoint(CPoint & p)x=p.x;y=p.y;double GetX()return x;double GetY()return y;class CLineprivate:double k,b;public:CLine(double k,double b)this->k=k;t

19、his->b=b;CLine(CPoint p1,CPoint p2)k=(p1.GetY()-p2.GetY()/(p1.GetX()-p2.GetX();b=p1.GetY()-k*p1.GetX();bool IncludePoint(CPoint p3)if(p3.GetY()=k*p3.GetX()+b)return true;else return false;double GetK()return k;void Display()if(b<0)cout<<"直线方程:y="<<k<<"x"&l

20、t;<b<<endl;else if(b=0)cout<<"直线方程:y="<<k<<"x"<<endl;elsecout<<"直线方程:y="<<k<<"x+"<<b<<endl;void main() CPoint p1,p2(2,7),p3(3,9);CLine line1(p1,p2);line1.Display();cout<<"该直线的斜率是:"&

21、lt;<line1.GetK()<<endl;if(line1.IncludePoint(p3)=true)cout<<"该点在直线上"<<endl;elsecout<<"该点不在直线上"<<endl;-设计圆类Circle,保护数据成员半径,公有成员函数:输出圆面积void area();设计球体类Sphere,公有继承圆类,公有成员函数:输出球体表面积void area();设计测试类,实现多态性,指向基类的指针,可以指向派生类对象,并调用派生类的成员函数。using namespac

22、e std;#include<iostream>class Circleprotected:double R;public:Circle(double r)R=r;virtual void area()cout<<"圆面积为:"<<3.14*R*R<<endl;class Sphere:public Circlepublic:Sphere(double r):Circle(r)R=r;virtual void area()cout<<"球表面积为:"<<4*3.14*R*R<&

23、lt;endl;void main()Circle c1(2);Circle *p;Sphere s1(5);p=&c1;p->area();p=&s1;p->area();using namespace std;#include<iostream>/(1) 定义类CShape,包含显示图形面积的含纯虚函数virtual void Display_Area( ) =0;/(2) 定义圆类CCircle,公有继承CShape,定义私有数据成员半径double r,有参构造函数,重写CShape类中的void Display_Area( )函数,显示圆面积;

24、/(3) 定义长方形类CSqure,公有继承CShape,定义数据成员长和宽分别为double length和double width,重写CShape类中的void Display_Area( )函数,显示长方形面积;/(4) 定义主函数,创建CShape类指针数组,分别指向圆和长方形对象,圆的半径为2,长方形的长和宽分别为3和4,显示圆和长方形的面积。/(5) 主函数参考代码;/void main()/CShape *aa2;/aa0=new CCircle(2);/aa1=new CSqure(3,4);/for(int i=0;i<2;i+)/aai->Display_Ar

25、ea();/class CShapepublic:virtual void Display_Area() =0;class CCircle:public CShapeprivate:double r;public:CCircle(double x)r=x;virtual void Display_Area( )cout<<"圆面积:"<<3.14*r*r<<endl;class CSqure:public CShapeprivate:double length,width;public:CSqure(double a,double b)l

26、ength=a;width=b;virtual void Display_Area( )cout<<"矩形面积:"<<length*width<<endl;void main()CShape *aa2;aa0=new CCircle(2);aa1=new CSqure(3,4);for(int i=0;i<2;i+)aai->Display_Area();-定义复数类Complex,(1)定义私有数据成员,实部和虚部;(2)定义带默认值的构造函数,给数据成员赋值,默认值为0;(3)定义输出函数void display(),输出

27、格式如“3+4i”或“-3-4i”;(4)定义复数与复数的加、减运算符重载;复数加实数运算符重载;赋值运算符重载;(5)定义主函数,对上述成员函数进行测试。using namespace std;#include<iostream>class Complexprivate:double a,b;public:Complex(double a=0,double b=0)this->a=a;this->b=b;Complex operator +(Complex c)Complex temp;temp.a=a+c.a;temp.b=b+c.b;return temp;Com

28、plex operator -(Complex c)Complex temp;temp.a=a-c.a;temp.b=b-c.b;return temp;Complex operator +(double c)Complex temp;temp.a=a+c;temp.b=b;return temp;Complex & operator =(Complex c)a=c.a;b=c.b;return *this;void display()if(b<0)cout<<a<<b<<"i"<<endl;elsecout&l

29、t;<a<<"+"<<b<<"i"<<endl;int main()Complex c1(2,5),c2(3,7),c3,c4,c5,c6;cout<<"c1="c1.display();cout<<"c2="c2.display();c3=c1+c2;cout<<"c3=c1+c2;c3="c3.display();c4=c1-c2;cout<<"c4=c1-c2;c4="

30、c4.display();c5=c1+5;cout<<"c5=c1+5;c5="c5.display();c6=c2;cout<<"c6=c2;c6="c6.display();-using namespace std;#include<iostream>/定义时钟类Clock,/(1)定义私有数据成员,时、分和秒;/(2)定义带默认值的构造函数,给数据成员赋值,默认值为0;要求对数据进行合法性判断,小时只能在023之间,分和秒都在060之间;/(3)定义输出函数void display(),输出格式如“h:m:s”;

31、/(4)定义时钟前缀+运算符重载,和后缀+运算符重载;/(5)定义主函数,对上述成员函数进行测试。class Clockprivate:double h,m,s;public:Clock(double h=0,double m=0,double s=0)if(h>=0&&h<24&&m>=0&&m<60&&s>=0&&s<60)this->h=h;this->m=m;this->s=s;elsecout<<"time error!"

32、;<<endl;void display()cout<<h<<":"<<m<<":"<<s<<endl;Clock & operator +()s+;if(s>=60)s=s-60;m+;if(m>=60)m=m-60;h+;if(h>=24)h=h-24;return * this;Clock operator +(int)s+;if(s>=60)s=s-60;m+;if(m>=60)m=m-60;h+;if(h>=24)h=

33、h-24;return * this;int main()Clock a(23,59,59);a+;a.display();+a;a.display();using namespace std;#include<iostream>/设计体积类/(1)定义CVolume类,包含求体积的纯虚函数virtual double volumeValue( ) =0;/(2) 定义球类CSphere,公有继承CVolume,定义私有数据成员求半径double r,定义有参构造函数,重写CVolume类中的double volumeValue( )函数,求球的体积;/(3)定义立方体类CCube

34、,公有继承CVolume,定义私有数据成员棱长为double side,定义有参构造函数,重写CVolume类中的double volumeValue( )函数,求立方体的体积;/(4) 定义主函数,完成上述功能的测试。class CVolumepublic:virtual double volumeValue( )=0;class CSphere:public CVolumeprivate:double r;public:CSphere(double r=0)this->r=r;virtual double volumeValue()return 3.14*4*r*r*r/3;clas

35、s CCube:public CVolumeprivate:double side;public:CCube(double s=0)side=s;virtual double volumeValue()return side*side*side;int main()CCube a(5);cout<<"立方体体积:"<<a.volumeValue()<<endl;CSphere b(5);cout<<"球体积:"<<b.volumeValue()<<endl;-/(1) 设计求三个数的

36、最大数的函数模板T max(T a, T b,T c);/(2) 在主函数中,分别用int、double对上述模板实例化,并测试结果。using namespace std;#include<iostream>template<class T>T max(T a,T b, T c)T max;if(a<b)max=b;elsemax=a;if(max<c)max=c;return max;int main()int a=2,b=1,c=5;cout<<"最大值为:"<<max(a,b,c)<<endl;

37、double x=3.14,y=3.8,z=3.5;cout<<"最大值为:"<<max(x,y,z)<<endl;-(1) 设计父亲类Father,保护的数据成员char fname6表示父亲的姓,私有成员char sname10表示父亲的名;定义公有的有参构造函数Father(char ffname,char ssname),给数据成员赋值;定义void displayfather()函数,显示父亲的名字。(2) 设计母亲类Mother,私有数据成员char mfname6, char msname10分别表示母亲的姓和名,定义公有的

38、有参构造函数Mother(char ffname,char ssname)给数据成员赋值,定义void displaymother()函数,显示母亲的名字。(3) 设计子女类Child,公有继承父亲类和母亲类,私有数据成员char cname10,表示子女的名,子女的姓,将从父亲类继承而来;定义公有的有参构造函数Child(char fname,char sname,char mname,char msname,char ccname),并调用基类的构造函数,同时给私有数据赋值;定义void display()函数,调用基类的显示函数,显示父亲姓名和母亲姓名,再输出自己的姓名。(4) 设计主函

39、数,对上述功能进行测试。主函数的参考代码如下:void main() Child cc("陈","国安","王","红","志刚"); cc.display();using namespace std;#include<iostream>#include<string.h>class Fatherprivate:char sname10;protected:char fname6;public:Father(char ffname,char ssname)strcpy(f

40、name,ffname);strcpy(sname,ssname);void displayfather()cout<<"父亲姓名为:"<<fname<<sname<<endl;class Motherprivate:char msname10;char mfname6;public:Mother(char ffname,char ssname)strcpy(mfname,ffname);strcpy(msname,ssname);void displaymother()cout<<"母亲姓名为:&quo

41、t;<<mfname<<msname<<endl;class Child:public Father,public Motherprivate:char cname10;public:Child(char fname,char sname,char mname,char msname,char ccname):Father(fname,sname),Mother(mname,msname)strcpy(cname,ccname);void display()Father:displayfather();Mother:displaymother();cout&

42、lt;<"孩子姓名为:"<<cname<<endl;int main()Child cc("陈","国安","王","红","志刚");cc.display();-using namespace std;#include<iostream>/使用虚函数编写程序,求球体和圆柱体的体积和表面积。/(1)定义基类Circle/ 定义数据成员Radius;/ 定义两个纯虚函数分别是:/ void Area(); /显示表面积/ void Vo

43、lumn(); /显示体积/(2)定义派生类球体类Sphere,公有继承Circle类,求出球体的表面积和体积;/(3)定义派生类圆柱体类Volum,公有继承Circle类,求出圆柱体的表面积和体积;/(4)定义测试类,完成上面代码所有的测试。class Circleprotected:double Radius;public:virtual void Area()=0;virtual void Volumn()=0;class Sphere:public Circlepublic:Sphere(double r)Radius=r;virtual void Area()double area;

44、area=4*3.14*Radius*Radius;cout<<"球的表面积="<<area<<endl;virtual void Volumn()double t;t=4*3.14*Radius*Radius*Radius/3;cout<<"球的体积="<<t<<endl;class Volum:public Circleprivate:double high;public:Volum(double r,double h)high=h;Radius=r;virtual void A

45、rea()double area;area=2*3.14*Radius*Radius+2*3.14*Radius*high;cout<<"圆柱体的表面积="<<area<<endl;virtual void Volumn()double t;t=3.14*Radius*Radius*high;cout<<"圆柱体的体积="<<t<<endl;int main()Sphere s1(5);s1.Area();s1.Volumn();Volum v1(5,5);v1.Area();v1.

46、Volumn();-(1)定义基类Person类定义私有数据成员char name10;定义公有的无参构造函数,对私有数据赋空值(即空字符串),公有函数void insert_name(char pname) / 对name重新赋值void print()/输出name(2)定义派生类Student类,公有继承虚基类Person定义私有数据成员char id12;/学号定义公有的无参构造函数,对私有数据赋空值(即空字符串),并调用基类的无参构造函数;公有函数void insert_id(char pid) / 对id重新赋值void print()/调用基类输出name,同时输出id(3)定义

47、派生类Teacher类,公有继承虚基类Person定义私有数据成员double sal;/工资定义公有的无参构造函数,对私有数据赋空值(即sal=0),并调用基类的无参构造函数;公有函数void insert_sal(double sal ) / 对sal重新赋值void print()/调用基类输出name,同时输出sal(4)定义派生类DepatementStudent,公有继承Student定义私有数据成员char dn20;/部门定义公有的无参构造函数,对私有数据赋空值(即空字符串),并调用基类的无参构造函数;公有函数void insert_dn(char pdn) / 对dn重新赋值

48、void print()/调用基类输出name,id,同时输出dn(5)定义派生类Tpost(做兼职的学生类),公有继承Teacher类,公有继承DepatementStudent类:定义公有的无参构造函数,调用基类Teacher类和DepatementStudent类的无参构造函数;void print()/调用基类Teacher的输出函数,再调用基类DepatementStudent的输出函数(6)定义主函数,并进行测试。using namespace std;#include<iostream>class Personprivate:char name10;public:Pe

49、rson()strcpy_s(name,"");void insert_name(char pname)strcpy_s(name,pname);void print()cout<<"姓名:"<<name<<endl;class Student:virtual public Personprivate:char id12;public:Student():Person()strcpy_s(id,"");void insert_id(char pid)strcpy_s(id,pid);void pri

50、nt()Person:print();cout<<"学号:"<<id<<endl;class Teacher:virtual public Personprivate:double sal;public:Teacher():Person()sal=0;void insert_sal(double sal)this->sal=sal;void print()Person:print();cout<<"薪水:"<<sal<<endl;class DepatementStudent:public Studentprivate:char dn20;public:DepatementStudent():Student()strcpy_s(dn,"");void insert_dn(char pdn)strcpy_s(dn,pdn);voi

温馨提示

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

评论

0/150

提交评论