24 列印月曆題解

2021-07-10 02:17:26 字數 1636 閱讀 5521

總時間限制: 

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來說是可以接受的,因為它是用於除錯和...