#include<stdio.h> #include<string.h> #include<stdlib.h> int months[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int isLeapYear(int y) { if((y%4==0&&y%100!=0)||y%400==0)return 1; return 0; } int getdays(int y,int m,int d,int flag) { int result=0; if(isLeapYear(y)) { months[2]+=1; int i=1; while(i<m){ result+=months[i]; i++; } result+=d; months[2]-=1; if(flag==0) { return 366-result+1; } else return result; } int i=1; while(i<m){ result+=months[i]; i++; } result+=d; if(flag==0) { return 365-result+1; } else return result; } int main(int argc, char *argv[]) { int y1,m1,d1,y2,m2,d2; char s1[10]; char s2[10]; char t[10]; while(~scanf("%s%s",s1,s2)) { strncpy(t,s1,4); t[4]='\0'; y1=atoi(t); strncpy(t,s1+4,2); t[2]='\0'; m1=atoi(t); strncpy(t,s1+6,2); t[2]='\0'; d1=atoi(t); strncpy(t,s2,4); t[4]='\0'; y2=atoi(t); strncpy(t,s2+4,2); t[2]='\0'; m2=atoi(t); strncpy(t,s2+6,2); t[2]='\0'; d2=atoi(t); //printf("%d %d %d ---- %d %d %d\n",y1,m1,d1,y2,m2,d2); if(y1!=y2) { int re=getdays(y1 , m1 , d1 , 0); for(int i=y1+1;i<y2;++i) { if(isLeapYear(i)) re+=366; else re+=365; } re+=getdays(y2, m2 , d2 ,1); printf("%d\n",re); } else printf("%d\n",getdays(y2 , m2 , d2 , 1)-getdays(y1 , m1 , d1 , 1)+1); } return 0; } /************************************************************** Problem: 1096 User: kirchhoff Language: C Result: Accepted Time:0 ms Memory:920 kb ****************************************************************/
原文地址:http://blog.csdn.net/wdkirchhoff/article/details/42219899