C++写一个日期类Date.docx

上传人:b****8 文档编号:10689867 上传时间:2023-02-22 格式:DOCX 页数:54 大小:24.67KB
下载 相关 举报
C++写一个日期类Date.docx_第1页
第1页 / 共54页
C++写一个日期类Date.docx_第2页
第2页 / 共54页
C++写一个日期类Date.docx_第3页
第3页 / 共54页
C++写一个日期类Date.docx_第4页
第4页 / 共54页
C++写一个日期类Date.docx_第5页
第5页 / 共54页
点击查看更多>>
下载资源
资源描述

C++写一个日期类Date.docx

《C++写一个日期类Date.docx》由会员分享,可在线阅读,更多相关《C++写一个日期类Date.docx(54页珍藏版)》请在冰豆网上搜索。

C++写一个日期类Date.docx

C++写一个日期类Date

写一个日期类Date,

(1)定义私有数据成员年、月、日;

(2)定义公有成员函数,(a)voidsetDate(inty,intm,intd);//要求对数据成员赋值;(b)voidoutput();//要求按年-月-日输出;(c)voidIsLeap();//判断年份是否是闰年;(d)voidaddOneday();//加上一天后的日期。

usingnamespacestd;

#include

classDate

{

private:

intyear,month,day;

public:

voidsetDate(inty,intm,intd)

{

year=y;

month=m;

day=d;

}

voidoutput()

{

cout<

}

voidIsLeap()

{

if(year%400==0||(year%4==0&&year%100!

=0))

{

cout<<"是闰年"<

}

else

{

cout<<"不是闰年"<

}

}

voidaddOneday()

{

if((month==2&&day==29)||((year%4!

=0||(year%100==0&&year%400!

=0))&&month==2&&day==28))

{

day=1;

month++;

}

elseif(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

{

if(month==12&&day==31)

{

year++;

month=1;

day=1;

}

elseif(day==31)

{

month++;

day=1;

}

}

elseif((month==4||month==6||month==9||month==11)&&day==30)

{

month++;

day=1;

}

else

{

day++;

}

cout<

}

};

voidmain()

{

Datea;

a.setDate(2000,2,28);

a.output();

a.IsLeap();

a.addOneday();

}

----------------------------------------------------------------------------------------------------------------------

作业2,设计圆类

实现圆类的成员函数,并在主函数中进行测试。

classCircle//圆类

{

private:

doubleradius;//半径

public:

//以下是公有成员函数

voidSetRadius(doubler);//设置半径

doubleCalculateArea();//求面积

doubleCalculateCircumference();//求周长

doubleGetRadius();//获取半径

voidPrint();//输出半径

};

usingnamespacestd;

#include

classCircle

{

private:

doubleradius;

public:

voidSetRadius(doubler)

{

radius=r;

}

doubleCalculateArea()

{

returnradius*radius*3.14;

}

doubleCalculateCircumference()

{

return2*3.14*radius;

}

doubleGetRadius()

{

returnradius;

}

voidPrint()

{

cout<<"半径:

"<

}

};

voidmain()

{

Circlea;

a.SetRadius(5);

cout<<"面积"<

cout<<"周长"<

cout<<"获取半径"<

a.Print();

}

-------------------------------------------------------------------------------------------------------------------

(1)数据成员有:

横坐标doublex、纵坐标doubley;

(2)提供两个构造函数:

无参构造函数将数据成员初始化为(0,0),有参构造函数利用参数对数据成员赋值;

(3)提供拷贝构造函数;

(4)成员函数voidmoveto(doublea,doubleb),表示点移动到新的坐标位置(a,b);

(5)成员函数voiddisplay(),输出点的坐标;

(6)友元函数doubledistance(CPoint&p1,CPoint&p2),求两点的距离;(求平方根sqrt函数math.h中);

(7)定义主函数,完成点类的测试。

#include

#include

classCPoint

{

private:

doublex,y;

public:

CPoint(doublex,doubley)

{

this->x=x;

this->y=y;

}

CPoint()

{

x=0;

y=0;

}

CPoint(constCPoint&p)

{

x=p.x;

y=p.y;

}

voidmoveto(doublea,doubleb)

{

x=a;

y=b;

}

voiddisplay()

{

cout<<"("<

}

frienddoubledistance(CPoint&p1,CPoint&p2)

{

doubletemp=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));

returntemp;

}

};

voidmain()

{

CPointa(0,0),b(3,4);

cout<<"距离:

"<

a.moveto(2,2);

a.display();

CPointc(b);

c.display();

}

//1)定义基类CMathA,有保护数据成员3个,分别为三个整数,公有成员函数3个,分别是有参构造函数、求这三个数的最大值,和最小值。

//

(2)定义派生类CMathB,公有继承CMathA,私有数据成员2个,分别是两个整数,公有成员函数3个,分别是有参构造函数(别忘记调用基类有参构造函数)、求5个数据成员的和,与积。

//(3)定义主函数,完成基类与派生类所有成员函数的测试。

usingnamespacestd;

#include

classCMathA

{

protected:

intx,y,z;

public:

CMathA(inta,intb,intc)

{

x=a;y=b;z=c;

}

voidmax()

{

intmax;

if(x>y)

{

max=x;

}

else

{

max=y;

}

if(max

{

max=z;

}

cout<<"最大值:

"<

}

voidmin()

{

intmin;

if(x

{

min=x;

}

else

{

min=y;

}

if(min>z)

{

min=z;

}

cout<<"最小值:

"<

}

};

classCMathB:

publicCMathA

{

private:

intm,n;

public:

CMathB(inta,intb,intc,intd,inte)

:

CMathA(a,b,c)

{

m=d;

n=e;

}

voidsum()

{

inttemp=x+y+z+m+n;

cout<<"和:

"<

}

voidmultiply()

{

inttem=x*y*z*m*n;

cout<<"乘积:

"<

}

};

voidmain()

{

CMathAa(1,3,2);

a.max();

a.min();

CMathBb(1,3,2,4,5);

b.multiply();

b.sum();

}

-------------------------------------------------------------------------------

(1)编写点类Point,包括两个私有数据成员doublex,y表示横纵坐标,成员函数包括两个分别是Point(doublex,doubley);//构造函数和Point(doublex,doubley);//显示函数

(2)编写几何图形的类Circle,包括两个属性:

圆心Pointcenter;和半径doubleR;成员函数包括:

圆心位置获取函数PointGetCenter();半径获取函数doubleGetR()、半径设置函数voidSetR(doubler)、圆的位置移动函数voidMoveTo(Pointp2);以及圆的信息打印函数voiddisplayCircle()。

(3)编写主函数,完成圆类中所有成员函数的测试。

usingnamespacestd;

#include

classPoint

{

private:

doublex,y;

public:

Point(doublea,doubleb)

{

x=a;

y=b;

}

voiddisPlay()

{

cout<<"圆心是:

("<

}

};

classCircle

{

private:

doubler;

Pointcenter;

public:

Circle(doubler,Pointp1)

:

center(p1)

{

this->r=r;

}

PointGetCenter()

{

returncenter;

}

voidSetR(doubler)

{

this->r=r;

}

doubleGetR()

{

returnr;

}

voiddisplayCircle()

{

center.disPlay();

cout<<"半径:

"<

}

voidMoveTo(Pointp2)

{

center=p2;

}

};

voidmain()

{

Pointp1(2,7),p2(3,7);

Circlecc(9,p1);

cc.displayCircle();

cc.MoveTo(p2);

cc.displayCircle();

cout<

}

---------------------------------------------------------------------------------------------------

1.设计平面坐标系中的点类CPoint:

(1)私有数据成员有:

横坐标doublex、纵坐标doubley;

(2)公有提供两个构造函数:

无参构造函数将数据成员初始化为(0,0),有参构造函数利用参数对数据成员赋值;

(3)公有提供拷贝构造函数;

(4)公有成员函数doubleGetX(),求点的横坐标;

(5)公有成员函数doubleGetY(),求点的纵坐标;

2.设计线类

(1)私有数据成员有:

斜率和截距;

(2)公有提供两个有参构造函数:

CLine(doublek,doubleb);CLine(CPointp1,CPointp2)

(3)公有成员函数doubleGetK(),求直线的斜率

(4)公有成员函数boolIncludePoint(CPointp1),判断一个点是否在直线上;

(5)公有成员函数voidDisplay(),显示直线方程。

3.定义主函数,完成线类所有测试。

usingnamespacestd;

#include

classCPoint

{

private:

doublex,y;

public:

CPoint(doublex,doubley)

{

this->x=x;

this->y=y;

}

CPoint()

{

x=0;y=0;

}

CPoint(CPoint&p)

{

x=p.x;

y=p.y;

}

doubleGetX()

{

returnx;

}

doubleGetY()

{

returny;

}

};

classCLine

{

private:

doublek,b;

public:

CLine(doublek,doubleb)

{

this->k=k;

this->b=b;

}

CLine(CPointp1,CPointp2)

{

k=(p1.GetY()-p2.GetY())/(p1.GetX()-p2.GetX());

b=p1.GetY()-k*p1.GetX();

}

boolIncludePoint(CPointp3)

{

if(p3.GetY()==k*p3.GetX()+b)

{

returntrue;

}

else

{

returnfalse;

}

}

doubleGetK()

{

returnk;

}

voidDisplay()

{

if(b<0)

{

cout<<"直线方程:

y="<

}

elseif(b==0)

{

cout<<"直线方程:

y="<

}

else

{

cout<<"直线方程:

y="<

}

}

};

voidmain()

{

CPointp1,p2(2,7),p3(3,9);

CLineline1(p1,p2);

line1.Display();

cout<<"该直线的斜率是:

"<

if(line1.IncludePoint(p3)==true)

{

cout<<"该点在直线上"<

}

else

{

cout<<"该点不在直线上"<

}

}

--------------------------------------------------------------------------------

设计圆类Circle,保护数据成员半径,公有成员函数:

输出圆面积voidarea();

设计球体类Sphere,公有继承圆类,公有成员函数:

输出球体表面积voidarea();

设计测试类,实现多态性,指向基类的指针,可以指向派生类对象,并调用派生类的成员函数。

usingnamespacestd;

#include

classCircle

{

protected:

doubleR;

public:

Circle(doubler)

{

R=r;

}

virtualvoidarea()

{

cout<<"圆面积为:

"<<3.14*R*R<

}

};

classSphere:

publicCircle

{

public:

Sphere(doubler):

Circle(r)

{

R=r;

}

virtualvoidarea()

{

cout<<"球表面积为:

"<<4*3.14*R*R<

}

};

voidmain()

{

Circlec1

(2);

Circle*p;

Spheres1(5);

p=&c1;

p->area();

p=&s1;

p->area();

}

usingnamespacestd;

#include

//

(1)定义类CShape,包含显示图形面积的含纯虚函数virtualvoidDisplay_Area()=0;

//

(2)定义圆类CCircle,公有继承CShape,定义私有数据成员半径doubler,有参构造函数,重写CShape类中的voidDisplay_Area()函数,显示圆面积;

//(3)定义长方形类CSqure,公有继承CShape,定义数据成员长和宽分别为doublelength和doublewidth,重写CShape类中的voidDisplay_Area()函数,显示长方形面积;

//(4)定义主函数,创建CShape类指针数组,分别指向圆和长方形对象,圆的半径为2,长方形的长和宽分别为3和4,显示圆和长方形的面积。

//(5)主函数参考代码;

//voidmain()

//{

//CShape*aa[2];

//aa[0]=newCCircle

(2);

//aa[1]=newCSqure(3,4);

//for(inti=0;i<2;i++)

//{

//aa[i]->Display_Area();

//}

//}

classCShape

{

public:

virtualvoidDisplay_Area()=0;

};

classCCircle:

publicCShape

{

private:

doubler;

public:

CCircle(doublex)

{

r=x;

}

virtualvoidDisplay_Area()

{

cout<<"圆面积:

"<<3.14*r*r<

}

};

classCSqure:

publicCShape

{

private:

doublelength,width;

public:

CSqure(doublea,doubleb)

{

length=a;

width=b;

}

virtualvoidDisplay_Area()

{

cout<<"矩形面积:

"<

}

};

voidmain()

{

CShape*aa[2];

aa[0]=newCCircle

(2);

aa[1]=newCSqure(3,4);

for(inti=0;i<2;i++)

{

aa[i]->Display_Area();

}

}

------------------------------------------------------------------------------

定义复数类Complex,

(1)定义私有数据成员,实部和虚部;

(2)定义带默认值的构造函数,给数据成员赋值,默认值为0;

(3)定义输出函数voiddisplay(),输出格式如“3+4i”或“-3-4i”;

(4)定义复数与复数的加、减运算符重载;复数加实数运算符重载;赋值运算符重载;

(5)定义主函数,对上述成员函数进行测试。

usingnamespacestd;

#include

classComplex

{

private:

doublea,b;

public:

Complex(doublea=0,doubleb=0)

{

this->a=a;

this->b=b;

}

Complexoperator+(Complexc)

{

Complextemp;

temp.a=a+c.a;

temp.b=b+c.b;

returntemp;

}

Complexoperator-(Complexc)

{

Complextemp;

temp.a=a-c.a;

temp.b=b-c.b;

returntemp;

}

Complexoperator+(doublec)

{

Complextemp;

temp.a=a+c;

temp.b=b;

returntemp;

}

Complex&operator=(Complexc)

{

a=c.a;

b=c.b;

return*this;

}

voiddisplay()

{

if(b<0)

{

cout<

}

else

{

cout<

}

}

};

intmain()

{

Complexc1(2,5),c2(3,7)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1