使用C語言打印月歷
打印日歷應(yīng)該是程序員入門時(shí)候的一個(gè)基礎(chǔ)練習(xí)。打印一年的日歷有許多不同的實(shí)現(xiàn),我這里提一個(gè)可以實(shí)現(xiàn)的方法。首先需要確定該年是閏年還是平年,閏年的二月是29天,全年是366天;平年二月是28天,全年365天。還需要確定該年的每一天是星期幾。從0001年1月1日是星期一開始,該值可以通過使用該年到元年的總天數(shù)模7來求得。最后考慮怎樣輸出日歷,可以先將日歷存儲在一個(gè)二維數(shù)組里面,也可以直接將它輸出。
#include<stdio.h>
/*判斷是平年還是閏年*/
int IsLeap (int year) {
if((year%4==0)&& (year%100!=0) || (year%400==0))
return 1;
else
return 0;
}
/*計(jì)算今年的第一天是星期幾*/
int FirstWeeday (int year) {
int days = (year-1)*365 + (year-1)/4 - (year-100)/100 + (year-1)/400;
return days%7;
}
/*打印星期*/
void PrintWeedTitl () {
int i;
for(i = 0;i<7;i++){
switch(i) {
case 0 : printf(" Sun ");break;
case 1 : printf("Mon ");break;
case 2 : printf("Tue ");break;
case 3 : printf("Wed ");break;
case 4 : printf("Thu ");break;
case 5 : printf("Fri ");break;
case 6 : printf("Sat ");break;
default : break;
}
}
printf("\n");
}
/*打印月份*/
void PrintMonTitl(int month) {
switch(month) {
case 0 : printf("Jan\n");break;
case 1 : printf("Feb\n");break;
case 2 : printf("Mar\n");break;
case 3 : printf("Apr\n");break;
case 4 : printf("May\n");break;
case 5 : printf("Jun\n");break;
case 6 : printf("Jul\n");break;
case 7 : printf("Aug\n");break;
case 8 : printf("Sep\n");break;
case 9 : printf("Oct\n");break;
case 10 : printf("Nov\n");break;
case 11 : printf("Dec\n");break;
default : break;
}
}
/*格式化輸出日歷*/
void PrintYear (int year) {
int m,i,d;
char c=' ';
int MONTH[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
if(IsLeap(year)) MONTH[1] = 29;
int firstwed = FirstWeeday(year);
printf("Year: %d\n",year);
printf("========================\n");
for(m = 0;m<12;m++) {
PrintMonTitl(m);
PrintWeedTitl();
for(d=1;d<=MONTH[m];d++) {
if(d == 1) {
for(i = 0;i<firstwed;i++)
printf("%5c",c);
printf("%5d",d);
}
else {
printf("%5d",d);
}
if((firstwed+d-1)%7 == 6) printf("\n");
}
firstwed = (firstwed + MONTH[m])%7;
printf("\n");
}
}
/*測試結(jié)果*/
int main() {
int year = 2016;
PrintYear(year);
}
代碼的測試結(jié)果如下:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語言實(shí)現(xiàn)設(shè)備管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)設(shè)備管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
詳解C++中的const關(guān)鍵字及與C語言中const的區(qū)別
這篇文章主要介紹了C++中的const關(guān)鍵字及與C語言中const的區(qū)別,const將所修飾的變量對象轉(zhuǎn)化為常量,需要的朋友可以參考下2016-04-04
Java?C++?算法題解拓展leetcode670最大交換示例
這篇文章主要介紹了Java?C++算法題解拓展leetcode670最大交換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
C++ 基礎(chǔ)教程之虛函數(shù)實(shí)例代碼詳解
虛函數(shù)在 c++ 的繼承體系中是一個(gè)非常重要概念,讓我們可以在子類中復(fù)寫父類的方法。這篇文章主要介紹了C++ 基礎(chǔ)教程之虛函數(shù)實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2020-02-02
淺談c++ 字符類型總結(jié)區(qū)別wchar_t,char,WCHAR
下面小編就為大家?guī)硪黄獪\談c++ 字符類型總結(jié)區(qū)別wchar_t,char,WCHAR。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03
利用C++實(shí)現(xiàn)計(jì)算機(jī)輔助教學(xué)系統(tǒng)
我們都知道計(jì)算機(jī)在教育中起的作用越來越大。這篇文章主要為大家詳細(xì)介紹了如何利用C++編寫一個(gè)計(jì)算機(jī)輔助教學(xué)系統(tǒng),感興趣的可以了解一下2023-05-05

