description
給定年月,列印當月的月曆表。
input
輸入為一行兩個整數,第乙個整數是年份year(1900 ≤ year ≤ 2099),第二個整數是月份month(1 ≤ month ≤ 12),中間用單個空格隔開。
output
輸出為月曆表。月曆表第一行為星期表頭,如下所示:
sun mon tue wed thu fri sat
其餘各行一次是當月各天的日期,從1日開始到31日(30日或28日)。
日期數字應於星期表頭右對齊,即各位數與星期表頭相應縮寫的最後乙個字母對齊。日期中間用空格分隔出空白。
sample input
2006 5
sample output
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
hint
閏年判斷方法:能被4整除但不能被100整除,或者能被400整除。
2023年1月1日是周一。
1.我們知道每個月的天數是不一樣的,所以我們需要陣列來表示每個月的天數。
2.另外,我們需要考慮乙個特例,閏年的二月有29天所以我們需要進行判斷。
3.然後我們就可以利用for迴圈來列印這個月的月曆了。
4.我們需要考慮到如何進行換行的問題,所以我們就需要乙個變數來進行控制。 當f小於等於7時,輸出,f++; 當f大於7時,輸出並換行,f=0;
5.但是我們還有乙個問題需要解決——每月的第一天是星期幾?對於這個問題,我們首先應當做到:
a) 由題可知:2023年的1月是周一,又有:
31%7=3;30%7=2;29%7=1;28%7=0;
所以我們可以利用乙個陣列來進行判定每個月最後一周多出的天數
c) 除了月之間,年之間也存在這樣的問題,我們知道
365%7=1;366%7=2
所以我們可以根據這個知道year+1900+1是和2023年相比,某年第一天比2023年晚了多少天。
d) 但是,閏年又會不一樣所以除了上述之外,還應該加上閏年的數量。
e) 最後除以7取餘數。
6.輸出時應當注意格式問題。
只要把思路轉**即可
#include
#include
using
namespace std;
int month[13]
=;int y[13]
=;//就是月份天%7
intmain()
cout<<
"sun mon tue wed thu fri sat"
(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++)}
return0;
}
24 列印月曆題解
總時間限制 1000ms 記憶體限制 65536kb 描述 給定年月,列印當月的月曆表。輸入 輸入為一行兩個整數,第乙個整數是年份year 1900 year 2099 第二個整數是月份month 1 month 12 中間用單個空格隔開。輸出 輸出為月曆表。月曆表第一行為星期表頭,如下所示 sun...
24 列印月曆
總時間限制 1000ms 記憶體限制 65536kb 描述給定年月,列印當月的月曆表。輸入輸入為一行兩個整數,第乙個整數是年份year 1900 year 2099 第二個整數是月份month 1 month 12 中間用單個空格隔開。輸出輸出為月曆表。月曆表第一行為星期表頭,如下所示 sun mo...
python3 題解(25)列印大X
問題 給定高度和筆寬,在控制台輸出乙個由星號組成的大x。當 高度 10,筆寬 4時,輸出如下 分析 一下子算出這個圖形的哪個位置輸出星號,哪個位置輸出空格,邏輯較複雜。如果把問題降解,就容易多了 只輸出 x 的一撇 只輸出 x 的一捺 只要把這兩個問題決,再組合一下就可以得到答案。以下是python...