題目描述
設計一個程序能計算一個日期加上若干天后是什麼日期。
輸入描述:
輸入第一行表示樣例個數m,接下來m行每行四個整數分別表示年月日和累加的天數。
輸出描述:
輸出m行,每行按yyyy-mm-dd的個數輸出。
示例1
輸入
1
2008 2 3 100
輸出
2008-05-13
題解
#include <cstdio>
#include <string.h>
int day_month[13][2] = {//平年和閏年的每個月的天數
{0, 0}, {31, 31}, {28, 29}, {31, 31}, {30, 30},
{31, 31}, {30, 30}, {31, 31}, {31, 31}, {30, 30},
{31, 31}, {30, 30}, {31, 31}
};
bool isLeap(int year){//判斷是否是閏年
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main()
{
int year, month = 1, day = 0, num;
int i, m;
while(scanf("%d", &m) != EOF){
while(m--){
scanf("%d%d%d%d", &year, &month, &day, &num);
while(num > 0){
day++;
if(day == day_month[month][isLeap(year)] + 1){//滿當月天數
month++;
day = 1;//日期變爲下個月的1號
}
if(month == 13){//滿十二個月
year++;
month=1;//日期變爲下一年的1月
}
num--;
}
printf("%04d-%02d-%02d\n", year, month, day);
month = 1, day = 0;//重新初始化
}
}
return 0;
}