C語言實驗 列印日曆

2021-08-31 18:18:14 字數 2138 閱讀 5860

專案實現首先輸入公元後任意年份,然後可以列印出該年份的日曆。

面向c語言初學者,大神輕噴hhh

下面是程式實際執行效果:

先輸入年份

然後輸出日曆

想要輸出每年的日曆,首先要確立乙個基準年。本人以公元1年為基準年,公元1年第一天定為星期日。

以公元第一年遞推,從而推出每年的第一天是星期幾。(也可以用計算公式來計算每年的第一天為星期幾,但我選擇了不需要數學推導的方法)

推算出第一天的星期之後可以簡單地推出每天的星期。

設計表頭,並且注意日期的疊加與換行。

一、遞推每年第一天時要計算這一天是公元後的第幾天,所以需要判斷閏年。

int runnian(int year)

else

return x;

}

用if判斷語句判斷是否為閏年,返回值為1即為閏年。

二、用遞推法判斷是公元後的第幾天

int day(int year)

else

} return d;

}

迴圈語句求加和,注意判斷閏年。

三、判斷某年第一天是星期幾

int week(int d)

return w;

}

我使用了switch語句,通過餘數判斷。也可以通過陣列實現。

四、判斷某月有幾天

int monthday(int month,int year)

else

} return y;

}

在每月輸出足夠數量的天數後,進入下乙個月的迴圈。我依然使用的switch,依然也可以用陣列實現。注意判斷閏年。

至此,全部的準備工作完成,進入主函式,列印日曆。

int main(void) 

} for(n=1;n<=monthday(month,year);n++)

else

w++;

if(w>7)

w=1;

if(n==monthday(month,year)) }}

system("pause");

return 0;

}

注意輸出的回車設定,每當星期到六時,要輸出回車。為了不亂碼最好設定輸出日期數字時的域寬,因為漢字佔兩個域寬,所以我也設定的二域寬。中間用空格分隔,達到整齊的效果。也可以設定更大的域寬,就不需要再單獨輸出空格了。

備註:因為我使用的vs2010編譯器,所以需要引入庫使用system(「pause」)語句,不然輸出結果只會閃一下就結束。用其他編譯器時可以不寫。

下面展示全部**(本人已經在編譯器上試過,可以直接使用)

#include #include//宣告判斷閏年的函式

int runnian(int year)

else

return x;

}//宣告判斷第幾天的函式

int day(int year)

else

} return d;

}//宣告判斷是星期幾的函式

int week(int d)

return w;

}//宣告每月天數的函式

int monthday(int month,int year)

else

} return y;

}int main(void)

} for(n=1;n<=monthday(month,year);n++)

else

w++;

if(w>7)

w=1;

if(n==monthday(month,year)) }}

system("pause");

return 0;

}

列印日曆的全過程就是這樣。

如果有不正確的地方,歡迎批評指正!

C語言實現日曆列印小程式

說明 這是乙個功能簡單的日曆列印程式 顯然沒什麼卵用 它可以列印1900年至2500年間的日期資訊。本程式沒有設定退出條件 你想要退出請強制退出 也沒有加入更為複雜的輸入判定 如果你輸入非法型別資料,可能發生死迴圈 非預期值等情況 所以請善待它。設計思路 程式以1900年的1月1日為基準 這天是星期...

C語言實驗 列印金字塔

problem description 輸入n值,列印下列形狀的金字塔,其中n代表金字塔的層數。輸入只有乙個正整數n。output 列印金字塔圖形,其中每個數字之間有乙個空格。sample input 3sample output 11 2 1 1 2 3 2 1 hint source 題解 特別...

C語言實現顯示日曆

使用c語言實現日曆顯示,下面是windows和linux的 ifdef win32 define crt secure no warnings endif include 判斷輸入的年份是否為閏年 引數說明 year,要判斷的年份 返回值 1 是閏年,0 不是閏年 int isleap int ye...