这个题目实际上是计算两个随意给的日期之间的天数.
算法:
这里的算法是算出两个日期离1年1月1日之间的天数,然后相减即可得到二者之间相差的天数.
判断闰年的宏值得学习,简洁高效.
代码:
#include "stdio.h" #define LEAP(y) (y%(y%100?4:400)==0) //闰年的判断宏.好算法 unsigned int months[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int between_days(int y,int m,int d){ int i,sum=0,k=0; for(i=1;i<y;i++) k=k+LEAP(i); //k表示1年到当前年一共多少个闰年. sum=sum+365*(y-1)+k; //365*倍数加上闰年数等于一共天数. months[1]=months[1]+LEAP(y); for(i=0;i<m-1;i++) sum=sum+months[i]; //计算月的总天数 sum=sum+d; //最后计算天 return sum; } int main(){ int total1,total2; int y,m,d; scanf("%d%d%d",&y,&m,&d); total1=between_days(y,m,d); scanf("%d%d%d",&y,&m,&d); total2=between_days(y,m,d); printf("%d",total2-total1); //年1-年2得到相差天数. system("pause"); }