codeup 2063 | 日期累加

 

問題 E: 日期累加

 

時間限制 : 1.000 sec  內存限制 : 32 MB
解決 : 686  提交 : 1281

題目描述

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

輸入

輸入第一行表示樣例個數m,接下來m行每行四個整數分別表示年月日和累加的天數。

輸出

輸出m行,每行按yyyy-mm-dd的個數輸出。

樣例輸入 

1
2008 2 3 100

樣例輸出 

2008-05-13

 


可以看看這篇文章:【純乾貨】超全! 計算天數、計算星期幾等日期問題 一文燉! 

此題就是在codeup 2026 | 日期類這題上改一點點...

 

思路很簡單:從輸入的日期開始往後推n天即可。

 

注意:需要用conut記錄往後推了幾天,在每後推一天時,count++,直到達到n。

 

就不細說啦,具體代碼如下:

//
// Created by LittleCat on 2020/2/2.
//

#include <cstdio>

/* 平年和閏年每個月的天數 */
int 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}
};

/* 判斷y年是否爲閏年
 * 是 則返回1 ; 否 則返回0 */
int isLeapYear(int y) {
    if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
        return 1;
    return 0;
}

int main() {
    int n;
    while (EOF != scanf("%d\n", &n)) {

        int y, m, d, days;
        for (; n; n--) {

            scanf("%d %d %d %d", &y, &m, &d, &days);
            int count = 0;
            while (count < days) {
                d++;  //天數進1
                /* 當月天數已滿 */
                if(d == month[m][isLeapYear(y)] + 1) {
                    d = 1;
                    m++;
                }
                /* 月份數已滿 */
                if(m == 13) {
                    y++;
                    m = 1;
                }
                count++;
            }
            printf("%04d-%02d-%02d\n", y, m, d);
        }
    }
}



end 

歡迎關注個人公衆號 雞翅編程 ”,這裏是認真且乖巧的碼農一枚。

---- 做最乖巧的博客er,做最紮實的程序員 ----

旨在用心寫好每一篇文章,平常會把筆記彙總成推送更新~

在這裏插入圖片描述

發佈了92 篇原創文章 · 獲贊 46 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章