題目1186 列印日期(日期計算)

2022-04-12 08:41:56 字數 906 閱讀 1958

給出年份m和這一年中的第n天,算出第n天是幾月幾號。

我們開乙個二維陣列來記錄每個月的天數,有人好奇,為什麼是二維陣列,不是一維就夠了嗎?這裡我們考慮到二月份閏年的關係,把二維陣列形式開成如下**中的樣子,第二維代表是不是閏年,方便快速查詢。

另外,判斷閏年是乙個經常用的東西,可以寫成巨集定義:#define isyeap(x) x%100!=0&&x%4==0||x%400==0?1:0

還有輸出格式,yyyy-mm-dd格式,用printf函式更好寫:printf("%04d-%02d-%02d\n",y,i,n);

ps:普及一下printf輸出格式。c語言格式化輸出預設為右對齊,+表示右對齊,-表示左對齊

printf ("%-08ld\n",y)預設在後面補兩個' ',不可能補0,補0就改變了數值大小,所以和0沒關係

printf ("%08ld\n",y)為右對其,前補0,結果都為-0043456

printf ("%+8ld\n",y)為右對齊,前補空格,結果為**-43456 注意:此處的星號表示空格!!(因為打空格怕你看不出來。。。)

//

//created by alvinzh on 2017/5/2.

////

#include

#include

#include

#include

using

namespace

std;

//判斷閏年

#define isyeap(x) x%100!=0&&x%4==0||x%400==0?1:0

int dayofmonth[13][2]=;

intmain()}}

}

出處: 

本人github:

題目1186 列印日期

題目描述 給出年分m和一年中的第n天,算出第n天是幾月幾號。輸入 輸入包括兩個整數y 1 y 3000 n 1 n 366 輸出 可能有多組測試資料,對於每組資料,按 yyyy mm dd的格式將輸入中對應的日期列印出來。樣例輸入 2000 3 2000 31 2000 40 2000 60 200...

題目1186 列印日期

題目描述 給出年分m和一年中的第n天,算出第n天是幾月幾號。輸入 輸入包括兩個整數y 1 y 3000 n 1 n 366 輸出 可能有多組測試資料,對於每組資料,按 yyyy mm dd的格式將輸入中對應的日期列印出來。樣例輸入 2000 3 2000 31 2000 40 2000 60 200...

九度題目1186 列印日期

題目描述 給出年分m和一年中的第n天,算出第n天是幾月幾號。輸入 輸入包括兩個整數y 1 y 3000 n 1 n 366 輸出 可能有多組測試資料,對於每組資料,按 yyyy mm dd的格式將輸入中對應的日期列印出來。樣例輸入 2000 3 2000 31 2000 40 2000 60 200...