给定一个日期题的模板;

#include<iostream>
using namespace std;
bool isLeapYear(int year){ //平均每四年一次闰年,但是400的倍数也是闰年
    if(year%4==0&&year%100!=0||year%400==0){
        return true;
    }return false;
}
int daytab[2][13]={ //日期表,记录每个月有多少天(其实只有二月有变化,闰年29,平年28)
        {0,31,28,31,30,31,30,31,31,30,31,30,31},
        {0,31,29,31,30,31,30,31,31,30,31,30,31}
};
int main(){
    int m,year,month,day,n;
    cin>>m;
    while(m--){
        cin>>year>>month>>day>>n;
        n+=day;
        day=0;//例如2008 2 3 100-->2008 2 0 103(方便计算)
        while(n>=daytab[isLeapYear(year)][month]){//以月为单位,知道最后不满一个月
            n-=daytab[isLeapYear(year)][month];
            day=0;
            if(month==12){//如果month为12月了,则要进位一年
                month=1;year++;
            }else{
                month++;
            }
        }day+=n;
        if(day==0){//因为是设置从0开始的,所以比如2008 6 30会输出成2008 7 0,要转换一下
            month--;
            day=daytab[isLeapYear(year)][month];
        }
        printf("%04d-%02d-%02d\n",year,month,day);
    }
    return 0;
}