c++用运算符重载写日期类,可以实现日期减,整数加日期 和日期加整数 10
2个回答
展开全部
#include<iostream.h>
static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31};
class date
{
int yr,mo,da;
public:
date(int y,int m,int d)
{
yr=y; mo=m; da=d;
}
date() {}
void disp()
{
cout<<yr<<"年"<<mo<<"月"<<da<<"日"<<endl;
}
date operator + (int day)
{
date dt=*this;
day+=dt.da;
while (day>dys[dt.mo-1])
{
day-=dys[dt.mo-1];
dt.mo++;
if (dt.mo==13)
{
dt.mo==1;
dt.yr++;
}
}
dt.da=day;
return dt;
}
date operator - (int day)
{
date dt=*this;
day=dt.da-day;
while (day<=0)
{
day+=dys[dt.mo-1];
dt.mo--;
if (dt.mo==0)
{
dt.mo=12;
dt.yr--;
}
}
dt.da=day;
return dt;
}
};
void main()
{
int y,m,d,a,b;
cout<<"输入年月日:";
cin>>y>>m>>d;
date d1(y,m,d),d2,d3;
d1.disp();
cout<<"输入要加的天数(整数):";
cin>>a;
d2=d1+a;
d2.disp();
cout<<"输入要减的天数(整数):";
cin>>b;
d3=d1-b;
d3.disp();
}
static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31};
class date
{
int yr,mo,da;
public:
date(int y,int m,int d)
{
yr=y; mo=m; da=d;
}
date() {}
void disp()
{
cout<<yr<<"年"<<mo<<"月"<<da<<"日"<<endl;
}
date operator + (int day)
{
date dt=*this;
day+=dt.da;
while (day>dys[dt.mo-1])
{
day-=dys[dt.mo-1];
dt.mo++;
if (dt.mo==13)
{
dt.mo==1;
dt.yr++;
}
}
dt.da=day;
return dt;
}
date operator - (int day)
{
date dt=*this;
day=dt.da-day;
while (day<=0)
{
day+=dys[dt.mo-1];
dt.mo--;
if (dt.mo==0)
{
dt.mo=12;
dt.yr--;
}
}
dt.da=day;
return dt;
}
};
void main()
{
int y,m,d,a,b;
cout<<"输入年月日:";
cin>>y>>m>>d;
date d1(y,m,d),d2,d3;
d1.disp();
cout<<"输入要加的天数(整数):";
cin>>a;
d2=d1+a;
d2.disp();
cout<<"输入要减的天数(整数):";
cin>>b;
d3=d1-b;
d3.disp();
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
引用wsxxfttt的回答:
#include<iostream.h>
static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31};
class date
{
int yr,mo,da;
public:
date(int y,int m,int d)
{
yr=y; mo=m; da=d;
}
date() {}
void disp()
{
cout<<yr<<"年"<<mo<<"月"<<da<<"日"<<endl;
}
date operator + (int day)
{
date dt=*this;
day+=dt.da;
while (day>dys[dt.mo-1])
{
day-=dys[dt.mo-1];
dt.mo++;
if (dt.mo==13)
{
dt.mo==1;
dt.yr++;
}
}
dt.da=day;
return dt;
}
date operator - (int day)
{
date dt=*this;
day=dt.da-day;
while (day<=0)
{
day+=dys[dt.mo-1];
dt.mo--;
if (dt.mo==0)
{
dt.mo=12;
dt.yr--;
}
}
dt.da=day;
return dt;
}
};
void main()
{
int y,m,d,a,b;
cout<<"输入年月日:";
cin>>y>>m>>d;
date d1(y,m,d),d2,d3;
d1.disp();
cout<<"输入要加的天数(整数):";
cin>>a;
d2=d1+a;
d2.disp();
cout<<"输入要减的天数(整数):";
cin>>b;
d3=d1-b;
d3.disp();
}
#include<iostream.h>
static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31};
class date
{
int yr,mo,da;
public:
date(int y,int m,int d)
{
yr=y; mo=m; da=d;
}
date() {}
void disp()
{
cout<<yr<<"年"<<mo<<"月"<<da<<"日"<<endl;
}
date operator + (int day)
{
date dt=*this;
day+=dt.da;
while (day>dys[dt.mo-1])
{
day-=dys[dt.mo-1];
dt.mo++;
if (dt.mo==13)
{
dt.mo==1;
dt.yr++;
}
}
dt.da=day;
return dt;
}
date operator - (int day)
{
date dt=*this;
day=dt.da-day;
while (day<=0)
{
day+=dys[dt.mo-1];
dt.mo--;
if (dt.mo==0)
{
dt.mo=12;
dt.yr--;
}
}
dt.da=day;
return dt;
}
};
void main()
{
int y,m,d,a,b;
cout<<"输入年月日:";
cin>>y>>m>>d;
date d1(y,m,d),d2,d3;
d1.disp();
cout<<"输入要加的天数(整数):";
cin>>a;
d2=d1+a;
d2.disp();
cout<<"输入要减的天数(整数):";
cin>>b;
d3=d1-b;
d3.disp();
}
展开全部
该程序有潜在的bug 若加或减的天数非常大会怎样? 比如说天数 达到 一千以上 看看这个年份和月份的进位会不会出现错误?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询