C++写一个日期类Date.docx
《C++写一个日期类Date.docx》由会员分享,可在线阅读,更多相关《C++写一个日期类Date.docx(54页珍藏版)》请在冰豆网上搜索。
![C++写一个日期类Date.docx](https://file1.bdocx.com/fileroot1/2023-2/22/f28eb570-344d-40f7-88a2-5eb319c0d91b/f28eb570-344d-40f7-88a2-5eb319c0d91b1.gif)
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)