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

2021-09-27 21:21:11 字數 2174 閱讀 2308

說明

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

設計思路:

程式以2023年的1月1日為基準(這天是星期一),當你輸入某一日期(年份加月份,如:1949 10)後,程式進行簡單的日期範圍性判斷。判斷成功後,首先計算1900-2023年一共有多少天(我這裡並非真正加上了每年的天數,進行閏年判斷。如果為閏年,就加上366%7,否則加上365%7。可以避免年份較大時資料超出 int 型資料範圍),然後加上2023年1-9月的天數,最終再加1(第10月的第一天)。最後用這個總值取餘7,即可知道2023年10月1日是星期幾(如果餘0為星期日,10月1號這天是星期六)。

然後利用乙個簡單的迴圈將這個月的日期與每週七天對應並列印,當然也有些值得注意的地方。比如首次列印時我借助了乙個臨時變數,以便於列印出 1 號之前(1號為週六,則上要列印週日至周五)的空格,隨後再利用乙個控制列印語句,實現每列印完週六後進行一次換行。

效果

**

#include #define init_year 1900	//基準年份

#define last_year 2500 //年份上限

#define base_year_weekday 1 //基準年1月1日是星期幾,用於修正日期

void help_info(); //列印幫助資訊

void input_date(int*, int*); //使用者輸入年份月份

_bool check_input(int, int); //檢查輸入是否在範圍內

void print_cal(int, int); //列印日曆

_bool runnian(int); //輔助函式,閏年判斷

int main(void)

while(1);

return 0;

}_bool runnian(int y)

void print_cal(int y, int m)

; //最後一年每個月天數,二月暫設為0

int week_day; //記錄輸入月份第一天為週幾

if(m < 10)

printf("----------%d-0%d----------\n", y, m);

else

printf("----------%d-%d----------\n", y, m);

for(; i < y; i++) //計算1900至使用者輸入年份前一年有多少天,只計入有效餘數

if(runnian(y)) //判斷最後一年二月份天數

mon_days[1] = 29;

else

mon_days[1] = 28;

for(i = 1; i < m; i++) //計算使用者輸入年份,這年到輸入月份前乙個月一共有多少天

sum = sum + mon_days[i-1]%7;

sum = sum + 1 + (base_year_weekday - 1); //新增輸入月份的第一天(1號)和基準年1月1號的偏移量

week_day = sum % 7; //計算1號是星期幾

//列印

printf("日 一 二 三 四 五 六\n");

for(i = 0; i < week_day; i++) //列印1號之前的空白部分

printf(" ");

int j = week_day; // j用於列印週六後的換行控制

for(i = 1; i <= mon_days[m-1]; i++) //正式列印

}printf("\n");

printf("--------------------------\n");

}_bool check_input(int y, int m)

if(m < 1 || m > 12)

return check_status;

}void input_date(int *y, int *m)

void help_info()

C語言實驗 列印日曆

專案實現首先輸入公元後任意年份,然後可以列印出該年份的日曆。面向c語言初學者,大神輕噴hhh 下面是程式實際執行效果 先輸入年份 然後輸出日曆 想要輸出每年的日曆,首先要確立乙個基準年。本人以公元1年為基準年,公元1年第一天定為星期日。以公元第一年遞推,從而推出每年的第一天是星期幾。也可以用計算公式...

C語言實現顯示日曆

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

C語言實現掃雷小程式

掃雷 是一款大眾類的益智小遊戲,於1992年發行。遊戲目標是在最短的時間內根據點選格仔出現的數字找出所有非雷格仔,同時避免踩雷,踩到乙個雷即全盤皆輸。在實現遊戲的首先,需要建立test.c game.c game.h三個檔案。test.c主要進行遊戲的測試。game.c主要進行遊戲內部一些函式的具體...