給出年份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...