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); }

评论