1 直接上代码吧
1 #include <stdio.h> 2 3 //判定闰年 4 #define ISLEAP(y) ((y)%4==0&&(y)%100!=0||(y)%400==0) 5 //如果是小月则30 大月则21 6 #define ISSMALL(m) ((m)==4||(m)==6||(m)==9||(m)==11) 7 #define NORMAL(m) (ISSMALL(m)?30:31) 8 //2月特殊处理 9 #define DAYS(y,m) ((m)==2?28+ISLEAP(y):NORMAL(m)) 10 //所判定得值是从起始到结束之间 11 #define IN(x,from,to) ((x)>=(from)&&(x)<=(to)) 12 #define VALID(y,m,d) ((y)>1600&&IN(m,1,12)&&IN(d,1,DAYS(y,m))) 13 14 /* 15 通过宏来算月份得天数 16 通过年月日判断是否如何规范(每个月得天数是否合法) 17 */ 18 int main() 19 { 20 printf("%d,%d,%d ",DAYS(2017,7),DAYS(2017,6),DAYS(2017,5)); 21 printf("%d,%d ",VALID(2015,2,29),VALID(2020,2,29)); 22 return 0; 23 }
2 截图
3 感觉简洁好多呀 嘿嘿嘿嘿嘿