题目描述
设计一个程序能计算一个日期加上若干天后是什么日期。
输入描述:
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。输出描述:
输出m行,每行按yyyy-mm-dd的个数输出。示例1
输入
复制
1 2008 2 3 100输出
复制
2008-05-13
#include <stdio.h>
#include <stdlib.h>
int daytab[2][13] = {
{
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 isLeapYear(int year){
return (year%4==0 && year%100 !=0) || (year%400==0);
}
int NumberOfYear(int year){
if(isLeapYear(year))
return 366;
else
return 365;
}
int main()
{
int n;
int year,month,day,sumday;
scanf("%d", &n);
while(n--){
scanf("%d%d%d%d", &year, &month, &day, &sumday);
int days = 0;
int row = isLeapYear(year);
for(int i=0;i<month;i++){
days+=daytab[row][i];
}
days += day;
days +=sumday;
while(days>NumberOfYear(year)){ //判断年分
days -=NumberOfYear(year);
year++;
}
int row2 = isLeapYear(year);
int i = 1;
while(days>daytab[row2][i]){ //判断月
days -= daytab[row2][i];
i++;
}
printf("%04d-%02d-%02d\n", year, i, days);
}
return 0;
}