總時間限制:
1000ms
記憶體限制:
65536kb 描述
給定年月,列印當月的月曆表。 輸入
輸入為一行兩個整數,第乙個整數是年份year(1900 ≤ year ≤ 2099),第二個整數是月份month(1 ≤ month ≤ 12),中間用單個空格隔開。 輸出
輸出為月曆表。月曆表第一行為星期表頭,如下所示:
sun mon tue wed thu fri sat
其餘各行一次是當月各天的日期,從1日開始到31日(30日或28日)。
日期數字應於星期表頭右對齊,即各位數與星期表頭相應縮寫的最後乙個字母對齊。日期中間用空格分隔出空白。
樣例輸入
2006 5
樣例輸出
sun mon tue wed thu fri sat
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 提示
閏年判斷方法:能被4整除但不能被100整除,或者能被400整除。
2023年1月1日是周一。
題解:
1.我們知道每個月的天數是不一樣的,所以我們需要乙個陣列month來表示每個月的天數。 2.
另外,我們需要考慮乙個特例——閏年的二月有29天所以我們需要用乙個if語句來進行判斷。 3.
然後我們就可以利用for迴圈來列印這個月的月曆了。 4.
當然我們需要考慮到如何進行換行的問題,所以我們就需要乙個變數f來進行控制。
a) 當f小於等於7時,輸出,f++;
b) 當f大於7時,輸出,換行,f=0; 5.
但是我們還有乙個問題需要解決——每月的第一天是星期幾?對於這個問題,我們首先應當做到:
a) 由題可知:2023年的1月是周一,又有:31%7=3;30%7=2;29%7=1;28%7=0;
b) 所以我們可以利用乙個陣列來進行判定每個月最後一周多出的天數
c) 除了月之間,年之間也存在這樣的問題,我們知道365%7=1;366%7=2;所以我們可以根據這個知道year+1900+1是和2023年相比,某年第一天比2023年晚了多少天。
d) 但是,潤年又會不一樣所以除了上述之外,還應該加上潤年的數量。
e) 最後除以7取餘數。 6.
輸出時應當注意格式問題。
程式:
#include
int main() ;
int y[13]=;
int i,n,l=1,year,f=0,m;
scanf("%d%d",&year,&m);
if((year%4==0&&year%100!=0)||(year%400==0))
printf("sun mon tue wed thu fri sat\n");
l=l+(year-1900)+((year-1900)/4);
for(i=1;i<=m;i++)
if(y[2]==1)
l=l-1;
for(i=1;i<=l;i++)
for(i=1;i<=month[m];i++)
} }
24 列印月曆
總時間限制 1000ms 記憶體限制 65536kb 描述給定年月,列印當月的月曆表。輸入輸入為一行兩個整數,第乙個整數是年份year 1900 year 2099 第二個整數是月份month 1 month 12 中間用單個空格隔開。輸出輸出為月曆表。月曆表第一行為星期表頭,如下所示 sun mo...
NOI1 13 24 列印月曆 題解 C
description 給定年月,列印當月的月曆表。input 輸入為一行兩個整數,第乙個整數是年份year 1900 year 2099 第二個整數是月份month 1 month 12 中間用單個空格隔開。output 輸出為月曆表。月曆表第一行為星期表頭,如下所示 sun mon tue we...
習題8 列印,列印
一 二 附加練習 1 檢查結果,記錄錯誤。2 最後一行既有單引號又有雙引號,他們是如何工作的?答 見註解1。三 註解 1 為什麼 r有時列印出來的是單引號,而我使用的是雙引號?答 python會用最有效的方式列印出字元,而不是完全按照你寫的方式列印。這樣做對於 r來說是可以接受的,因為它是用於除錯和...