C語言實作的萬年曆小程式(附程式碼)
這篇文章主要介紹了C語言實現的一個萬年曆小程式,相對簡單,做C語言日期計算的朋友可以參考下
該程式簡單地輸入一個年份(1901年後的年份),隨後程式輸出該年份十二個月的日曆。
#include<stdio.h> #define Mon 1 #define Tues 2 #define Wed 3 #define Thur 4 #define Fri 5 #define Sat 6 #define Sun 0 #define January_days 31 #define February_days 28 #define March_days 31 #define April_days 30 #define May_days 31 #define June_days 30 #define July_days 31 #define August_days 31 #define September_days 30 #define October_days 31 #define November_days 30 #define December_days 31 #define first1month January_days #define first2month January_days+February_days #define first3month January_days+February_days+March_days #define first4month January_days+February_days+March_days+April_days #define first5month January_days+February_days+March_days+April_days+May_days #define first6month January_days+February_days+March_days+April_days+May_days+June_days #define first7month January_days+February_days+March_days+April_days+May_days+June_days \ +July_days #define first8month January_days+February_days+March_days+April_days+May_days+June_days \ +July_days+August_days #define first9month January_days+February_days+March_days+April_days+May_days+June_days \ +July_days+August_days+September_days #define first10month January_days+February_days+March_days+April_days+May_days+June_days \ +July_days+August_days+September_days+October_days #define first11month January_days+February_days+March_days+April_days+May_days+June_days \ +July_days+August_days+September_days+October_days+November_days int known_weekday = Tues; int known_year = 1901; int konwn_month = 1; int known_day = 1; int day_count(int month) { switch(month) { case 1: return 0;break; case 2: return first1month;break; case 3: return first2month;break; case 4: return first3month;break; case 5: return first4month;break; case 6: return first5month;break; case 7: return first6month;break; case 8: return first7month;break; case 9: return first8month;break; case 10: return first9month;break; case 11: return first10month;break; case 12: return first11month;break; } } /*char * month_name(int month) { switch(month) { case 1: return "January"; break; case 2: return "February"; break; case 3: return "March"; break; case 4: return "April"; break; case 5: return "May"; break; case 6: return "June"; break; case 7: return "July"; break; case 8: return "August"; break; case 9: return "September"; break; case 10: return "October"; break; case 11: return "November"; break; case 12: return "December"; break; default: break; } }*/ char * month_name(int month) { switch(month) { case 1: return "一月"; break; case 2: return "二月"; break; case 3: return "三月"; break; case 4: return "四月"; break; case 5: return "五月"; break; case 6: return "六月"; break; case 7: return "七月"; break; case 8: return "八月"; break; case 9: return "九月"; break; case 10: return "十月"; break; case 11: return "十一月"; break; case 12: return "十二月"; break; default: break; } } /*按格式打印某年某月名称*/ void first_line_print(int month, int year) { //printf("%20s %d \n",month_name(month),year); printf("%8d年 %s \n",year, month_name(month)); } /*按格式打印星期名称*/ void week_print() { //printf("%-6s%-6s%-6s%-6s%-6s%-6s%-6s\n","Sun.", "Mon.", "Tues.", "Wed.", "Thur.", "Fri.", "Sat."); printf("%-3s%-3s%-3s%-3s%-3s%-3s%-3s\n","日", "一", "二", "三", "四", "五", "六"); } /*计算该年该月份与已知日子之间的距离天数*/ int date_distance_count(int month, int year) { int leap_year_count = 0; int i; int distance; if (year > known_year) { for (i=known_year; i<year; i++) { if(((i%4 == 0) && (i%100 != 0) ) || (i%400 == 0)) { leap_year_count++; } } if (month > 2) { if(((year%4 == 0) && (year%100 != 0) ) || (year%400 == 0)) { leap_year_count++; } } } else if (year == known_year) { if (month > 2) { leap_year_count = 1; } } distance = (year - known_year)*365 + leap_year_count + day_count(month); return distance; } /*确定该月份第一天是星期几*/ int makesure_firstday_weekday(int month, int year) { int date_distance = 0; int weekday; date_distance = date_distance_count(month, year); weekday = (known_weekday + date_distance)%7; return weekday; } /*依次打印出该月份的日子*/ void print_in_turn(int month, int firstday, int year) { int i = 1; int weekday; switch(firstday) { case Sun: break; case Mon: printf("%-3s",""); break; case Tues: printf("%-6s",""); break; case Wed: printf("%-9s",""); break; case Thur: printf("%-12s",""); break; case Fri: printf("%-15s",""); break; case Sat: printf("%-18s",""); break; } switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: { for(i=0; i<31; i++) { weekday = (firstday + i)%7; printf("%-3d",i+1); if(weekday == Sat) { printf("\n"); } } break; } case 2: { if(((year%4 == 0) && (year%100 != 0) ) || (year%400 == 0)) /*闰年*/ { for(i=0; i<29; i++) { weekday = (firstday + i)%7; printf("%-3d",i+1); if(weekday == Sat) { printf("\n"); } } break; } else /*平年*/ { for(i=0; i<28; i++) { weekday = (firstday + i)%7; printf("%-3d",i+1); if(weekday == Sat) { printf("\n"); } } break; } } case 4: case 6: case 9: case 11: { for(i=0; i<30; i++) { weekday = (firstday + i)%7;/*计算该天是星期几*/ printf("%-3d",i+1); if(weekday == Sat) { printf("\n");/*如果是星期六,则换行*/ } } break; } } } void date_print(int month, int year) { int firstday; firstday = makesure_firstday_weekday(month, year); print_in_turn(month, firstday, year); printf("\n"); } void main_month(int month, int year) { first_line_print(month, year); week_print(); date_print(month, year); printf("\n\n"); } void main_calendar(int year) { int i; for(i=1; i<=12; i++) { main_month(i, year); } } int main() { int year; printf("请输入年份:year = "); scanf("%d",&year); printf("\n"); while(year < 1902) { printf("请输入大于1901的年份\n"); printf("请输入年份:year = "); scanf("%d",&year); printf("\n"); } main_calendar(year); scanf(" "); return 0; }
執行效果圖:
以上是C語言實作的萬年曆小程式(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

小程式開發中的PHP權限管理與使用者角色設定隨著小程式的普及和應用範圍的擴大,使用者對於小程式的功能和安全性提出了更高的要求,其中權限管理和使用者角色設定是保證小程序安全性的重要一環。在小程式中使用PHP進行權限管理和使用者角色設定能夠有效地保護使用者的資料和隱私,以下將介紹如何實現此功能。一、權限管理的實作權限管理是指依據使用者的身分和角色,授予不同的操作權限。在小

PHP在小程式開發的頁面跳轉與路由管理隨著小程式的快速發展,越來越多的開發者開始將PHP與小程式開發結合。在小程式開發中,頁面跳轉和路由管理是非常重要的一部分,它能夠幫助開發者實現頁面之間的切換和導航操作。 PHP作為常用的伺服器端程式語言,可以很好地與小程式互動和資料傳遞,下面我們來詳細了解PHP在小程式中的頁面跳轉與路由管理。一、頁面跳轉基

如何在uni-app中實現小程式開發和發布隨著行動互聯網的發展,小程式成為了行動應用程式開發的重要方向。而uni-app作為一個跨平台的開發框架,可以同時支援多個小程式平台的開發,如微信、支付寶、百度等。以下將詳細介紹如何使用uni-app開發和發布小程序,並提供一些具體的程式碼範例。一、小程式開發前準備在開始使用uni-app開發小程式之前,需要先做一些準備工

小程式開發中的PHP安全防護與攻擊防範隨著行動網路的快速發展,小程式成為了人們生活中重要的一部分。而PHP作為一種強大而靈活的後端開發語言,也被廣泛應用於小程式的開發。然而,安全問題一直是程式開發中需要重視的面向。本文將重點放在小程式開發中PHP的安全防護與攻擊防範,同時提供一些程式碼範例。 XSS(跨站腳本攻擊)防範XSS攻擊是指駭客透過向網頁注入惡意腳本

小程式開發中的PHP資料快取與快取策略隨著小程式的快速發展,更多的開發者開始關注如何提高小程式的效能和回應速度。其中一個重要的最佳化手段是使用資料快取來減少對資料庫和外部介面的頻繁存取。而在PHP中,我們可以利用各種快取策略來實現資料快取。本文將介紹PHP中的資料快取原理,並提供幾個常見的快取策略的範例程式碼。一、資料快取原理資料快取是指將資料存放在記憶體中,以

今天我們來學習微信小程式中PHP開發的下拉式選單實作方法。微信小程序是一種輕量級的應用程序,用戶可以在微信裡直接使用,而且不需要下載安裝,非常方便。而PHP是一種非常流行的後端程式語言,也是與微信小程式配合很好的語言。下面我們就來看看如何在微信小程式中使用PHP開發下拉式選單。首先,我們需要準備好開發環境,包括PHP、微信小程式開發工具和伺服器。然後我們

小程式開發中的PHP頁面動畫效果與互動設計導語:小程式是一種在行動裝置上運行的應用程序,能夠提供類似原生應用程式的體驗。而在小程式開發中,PHP作為常用的後端語言,可以為小程式頁面增添動畫效果與互動設計。本文將介紹一些常用的PHP頁面動畫效果與互動設計,並附上程式碼範例。一、CSS3動畫CSS3提供了豐富的屬性與方法,用於實現各種動畫效果。而在小

UniApp實作位元組跳動小程式的開發與上線流程解析位元組跳動小程式作為一種新興的行動應用開發方式,正逐漸在業界流行起來。在開發位元組跳動小程式之前,我們需要了解如何使用UniApp來實現開發和上線的流程。一、UniApp簡介UniApp是一套基於Vue.js開發的以HTML5、App、小程式為多端統一開發的框架,透過編寫一套程式碼,可以同時在多個平台上運行,包括字
