#ifndef _LEAP_COMMON_YEAR_H_ #define _LEAP_COMMON_YEAR_H_ #include <stdio.h> /* 判断是否为闰年 */ int leap_year(int year); /* 输入某年、月、日,判断为某年的第几天 */ int day_of_year(int year, int month, int day); /* month_day函数: 将某年中第几天的日期表示形式转换为某月某日的表示形式 */ int month_day_aboutYear(int year, int yearday, int *pmonth, int *pday); /* month_name函数: 返回第n个月份的名字 */ char *get_month_name(int n); #endif ================================================================= #include "leap_common_year.h" /* 平年与闰年月份天数列表: 平年,闰年 */ static char daytab[2][13] = { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} }; /* 闰年判断 */ int leap_year(int year) { if(year < 0) { printf("it's error year [%d]\n", year); return -1; } if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 1; return 0; } /* 输入某年、月、日,判断为某年的第几天 */ int day_of_year(int year, int month, int day) { int i, leap; if(0 > year || 0 > month && month > 12 || 0 > day || day > 31) return -1; leap = leap_year(year); for(i = 1; i < month; i++) day += daytab[leap][i]; return day; } /* month_day函数: 将某年中第几天的日期表示形式转换为某月某日的表示形式 */ int month_day_aboutYear(int year, int yearday, int *pmonth, int *pday) { int i, leap; if(0 > year || 0 > yearday || yearday > 365) return -1; leap = leap_year(year); for(i = 1; yearday > daytab[leap][i]; i++) yearday -= daytab[leap][i]; *pmonth = i; *pday = yearday; } /* month_name函数: 返回第n个月份的名字 */ char *get_month_name(int n) { static char *name[] = { "Illegal month", "January","February","March", "April","May","June", "July","Augest","September", "October","November","December" }; return (n < 1 || n > 12)?name[0]:name[n]; } /* int main(int argc, char *argv[]) { int i; int year = 2016; int month = 0; int day = 0; printf("day[%d]\n",day_of_year(2016, 5, 22)); month_day(year, 143, &month, &day); printf("year[%d]-month[%d]-day[%d]\n", year, month, day); for(i = 1; i <= 12; i++) printf("%s\n",month_name(i)); return 0; } */ ============================================================== |
|