【牛客網】北京理工大學 日期累加 解題報告

題目描述

設計一個程序能計算一個日期加上若干天后是什麼日期。

輸入描述:

輸入第一行表示樣例個數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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章