// 给定一个天数,查询该天之后的日期//例如//当前日期是 2008 11 10 则5050天后是 2022 9 8 #include <iostream> using namespace std; class DAY{private: int y; int m; int d; int days[12]; public: DAY() { cout<<"请输入当前日期"<<endl; cout <<"year"<<endl; cin >> y; cout << "mouth"<<endl; cin >>m; cout << "day"<<endl; cin >> d; int i; for( i = 1 ; i <= 12 ; i++) { switch(i) { case 2: days[i-1] = isLeapYear() ? 29:28; //设置2月天数 break; case 4: case 6: case 9: case 11: days[i-1] = 30; break; default : days[i-1] = 31; } } } void show() { cout <<"year:"<<y<<endl; cout <<"mouth:"<<m<<endl; cout <<"day:"<<d<<endl; } int judge_day(int mouth) { return days[mouth-1]; } void calculate(int increase) { if(d + increase <= days[m-1]) d += increase; else { increase -= days[m-1] - d; m++; if(m>12) { //if m is greater than 12 , and increase is less than days[m-1] //,then the following while statement will not be executed, //so must reset m and year++ m = 1; y++; } while(increase -days[m-1] >0) { increase -= days[m-1]; m++; if(m > 12) { y++; m = 1; days[1] = isLeapYear() ? 29 : 28; } } d = increase; } } bool isLeapYear() { return ( y%4 == 0 && y%100 != 0 ) || (y%400 == 0); }}; int main(){ DAY test; int increase; test.show(); cout <<"请输入天数,以查询该天之后的日期"<<endl; cin >> increase; test.calculate(increase); cout <<"\n"<<increase<<"天以后是:"<<endl; test.show(); return 0;}

评论