上不得台面的东西,见笑了
#define LOCAL #include<iostream> class YEAR//year类 { public: YEAR():year(0),leap(false){} void setyear(int y){year=y;leap=leaptest(y);} int getyear(){return year;} bool isleap(){return leap;} void add(bool b){if(b){++year;leap=leaptest(year);}} private: bool leaptest(int y) {return ((y%400==0)||(y%100!=0&&y%4==0));} int year; bool leap; }; class MONTH//month类 { public: MONTH():month(0) { int t[12]={31,28,31,30,31,30,31,31,30,31,30,31}; for(int i=0;i<12;i++) monthBox[i]=t[i]; } void setmonth(int m){month=m;} int getmonth(){return month;} bool add(bool b){if(b){month%=12;++month;return month==1;}return false;} int contain(bool leap) { if(leap&&month==2) return 29; else return monthBox[month-1]; } private: int monthBox[12]; int month; }; class DAY//day类 { public: DAY():day(0){} void setday(int d){day=d;} int getday(){return day;} bool add(int contain){day%=contain;++day;return day==1;} private: int day; }; class WEEK//week类 { public: WEEK():week(0) { std::string t[7]={"星期一","星期二","星期三","星期四","星期五","星期六","星期日"}; for(int i=0;i<7;i++) weekBox[i]=t[i]; } void setweek(int w){week=w;week--;} std::string getweek(){return weekBox[week];} void add(){(++week)%=7;} private: std::string weekBox[7]; int week; }; class DATE//date类 { public: DATE():cnt(0){} void setdate(int y,int m,int d,int w,int c) { year.setyear(y); month.setmonth(m); day.setday(d); week.setweek(w); cnt=c; } void add() { year.add(month.add(day.add(month.contain(year.isleap())))); week.add(); cnt++; } void printdate() { std::cout<<year.getyear()<<"年"<<month.getmonth()<<"月"<<day.getday()<<"号"<<" 晴 "<<week.getweek()<<" "<<cnt<<std::endl; } private: YEAR year; MONTH month; DAY day; WEEK week; int cnt; }; int main() { #ifdef LOCAL freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); #endif DATE date; date.setdate(2011,11,30,4,538); int n; std::cin>>n; while(n--) { date.printdate(); date.add(); } return 0; }