NOI1 13 24 列印月曆 題解 C

2021-10-04 22:59:44 字數 1713 閱讀 1170

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...