C++写一个日期类Date.docx
- 文档编号:10689867
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:54
- 大小:24.67KB
C++写一个日期类Date.docx
《C++写一个日期类Date.docx》由会员分享,可在线阅读,更多相关《C++写一个日期类Date.docx(54页珍藏版)》请在冰豆网上搜索。
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) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 一个 日期 Date
![提示](https://static.bdocx.com/images/bang_tan.gif)