c++程序设计题:1,定义一个日期类,要求:(1)实现带3个参数的构造函数。
2)实现不带参数但将日期初始化为指定日期。(3),实现显示日期的成员函数showdate(),日期格式为“2011-11-09”...
2)实现不带参数但将日期初始化为指定日期。(3),实现显示日期的成员函数showdate(),日期格式为“2011-11-09”
展开
展开全部
#include <iostream>
#include <iomanip>
using namespace std;
class ymd
{
public:
ymd()
{
y=2011;
m=11;
d=9;
}
ymd(int yy,int mm,int dd)
{
if((yy>0&&mm>1&&mm<=12&&dd>=1&&dd<=dmax(yy,mm)))
{
y=yy;
m=mm;
d=dd;
}
else
{
cerr<<"该日期不存在:"
<<setw(4)<<setfill('0')<<yy<<"-"
<<setw(2)<<setfill('0')<<mm<<"-"
<<setw(2)<<setfill('0')<<dd;
}
}
ymd(ymd& yymmdd)
{
y=yymmdd.y;
m=yymmdd.m;
d=yymmdd.d;
}
void showdate()
{
cout<<setw(4)<<setfill('0')<<y<<"-"
<<setw(2)<<setfill('0')<<m<<"-"
<<setw(2)<<setfill('0')<<d;
}
private:
int isly(int year)
{
return ((!(year%4))&&(year%100)||(!(year%400)));
}
int dmax(int y,int m)
{
if(m==2)
{
return 28+(isly(y));
}
if((m==1||m==3||m==5||m==7||m==8||m==10||m==12))
return 31;
return 30;
}
int y;
int m;
int d;
};
int main()
{
ymd ymd1;
ymd1.showdate();
ymd ymd2(2012,12,12);
cout<<endl;
ymd2.showdate();
ymd1=ymd2;
cout<<endl;
ymd1.showdate();
cout<<endl;
ymd ymd3(2011,2,29);
cout<<endl;
return 0;
}
运行结果:
2011-11-09
2012-12-12
2012-12-12
该日期不存在:2011-02-29
请按任意键继续. . .
#include <iomanip>
using namespace std;
class ymd
{
public:
ymd()
{
y=2011;
m=11;
d=9;
}
ymd(int yy,int mm,int dd)
{
if((yy>0&&mm>1&&mm<=12&&dd>=1&&dd<=dmax(yy,mm)))
{
y=yy;
m=mm;
d=dd;
}
else
{
cerr<<"该日期不存在:"
<<setw(4)<<setfill('0')<<yy<<"-"
<<setw(2)<<setfill('0')<<mm<<"-"
<<setw(2)<<setfill('0')<<dd;
}
}
ymd(ymd& yymmdd)
{
y=yymmdd.y;
m=yymmdd.m;
d=yymmdd.d;
}
void showdate()
{
cout<<setw(4)<<setfill('0')<<y<<"-"
<<setw(2)<<setfill('0')<<m<<"-"
<<setw(2)<<setfill('0')<<d;
}
private:
int isly(int year)
{
return ((!(year%4))&&(year%100)||(!(year%400)));
}
int dmax(int y,int m)
{
if(m==2)
{
return 28+(isly(y));
}
if((m==1||m==3||m==5||m==7||m==8||m==10||m==12))
return 31;
return 30;
}
int y;
int m;
int d;
};
int main()
{
ymd ymd1;
ymd1.showdate();
ymd ymd2(2012,12,12);
cout<<endl;
ymd2.showdate();
ymd1=ymd2;
cout<<endl;
ymd1.showdate();
cout<<endl;
ymd ymd3(2011,2,29);
cout<<endl;
return 0;
}
运行结果:
2011-11-09
2012-12-12
2012-12-12
该日期不存在:2011-02-29
请按任意键继续. . .
本回答被提问者采纳
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询