P258 11.3
# include<iostream.h>
class Date
{
int year;
int month;
int day;
public:
Date();
Date(int year,int month,int day);
void addOneDay(Date &date);
void setDate(Date &date);
void displayDate(Date &date);
int isLeapYear(int year);
};
Date::Date()
{
}
Date::Date(int year,int month,int day)
{
this->year=year;
this->month=month;
this->day=day;
}
void Date::addOneDay(Date &date)
{
switch(date.month)
{
case 1://31天的月份
case 3:
case 5:
case 7:
case 8:
case 10:
if(date.day==31)
{
date.month+=1;
date.day=1;
}
else
date.day+=1;
break;
case 12://31天的12月可能进入到下一年
if(date.day==31)
{
date.year+=1;
date.month=1;
date.day=1;
}
else
date.day+=1;
break;
case 4://30天的月份
case 6:
case 9:
case 11:
if(date.day==30)
{
date.month+=1;
date.day=1;
}
else
date.day+=1;
break;
case 2://2月有闰年与平年之分
if(isLeapYear(date.year))
{
if(date.day==29)
{
date.month+=1;
date.day=1;
}
else
date.day+=1;
}
else
{
if(date.day==28)
{
date.month+=1;
date.day=1;
}
else
date.day+=1;
}
break;
}
}
int Date::isLeapYear(int year)
{
//能被4和100整除,但不能被400整除.
return (year%4==0&&year%100==0)||(year%400==0);
}
void Date::setDate(Date &date)//注意参数传递
{
int year;
int month;
int day;
cout<<"Please input year:";
cin>>year;
cout<<"Please input month:";
cin>>month;
while(month>12)
{
cout<<"Please input month less than 12:";
cin>>month;
}
cout<<"Please input day:";
cin>>day;
while(day>31)
{
cout<<"Please input day less than 31:";
cin>>month;
}
date.year=year;
date.month=month;
date.day=day;
}
void Date::displayDate(Date &date)
{
cout<<date.day<<"/"
<<date.month<<"/"
<<date.year<<endl;
}
void main()
{
Date date1(2000,2,28);
date1.addOneDay(date1);
Date date2;
date2.setDate(date2);
date2.displayDate(date2);
}
评论