專案實現首先輸入公元後任意年份,然後可以列印出該年份的日曆。
面向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...