有关日期差的问题 求指点
计算时间差我是按较小的年份一天一天加到较大年份的。代码如下:
程序代码:
#include<stdio.h> #include<stdbool.h> bool isLeap(int year){ return (year%4==0&&year%100!=0) || (year%400==0); } int main(){ int month[13][2]={(0,0),(31,31),(28,29),(31,31),(30,30),(31,31),(30,30),(31,31),(31,31),(30,30),(31,31),(30,30),(31,31)}; int time1,y1,m1,d1; int time2,y2,m2,d2; int tmp; int cnt=1; while(scanf("%d%d",&time1,&time2)!=EOF)//输入年月日并将较大值放入time2中 { if(time1>time2){ tmp=time1; time1=time2; time2=tmp; } } //从8位数据中分离出年月日 y1=time1/10000; m1=time1/100%100; d1=time1%100; y2=time2/10000; m2=time2/100%100; d2=time2%100; //计算从time1到time2所需天数 // do{ // d1++; // cnt++; // if(d1>month[m1][isLeap(y1)]){ // d1=1; // m1++; // // } // if(m1>12){ // y1++; // m1=1; // } // // }while(y1!=y2&&m1!=m2&&d1!=d2);//do-while就不知道哪里有问题了 while(y1<y2||m1<m2||d1<d2) { d1++; if(d1==month[m1][isLeap(y1)]+1)//我写的是if(d1>month[m1][isLeap(y1)]) { d1=1; m1++; } if(m1==13)//同上if(m1>12) { y1++; m1=1; } cnt++; } printf("%d\n",cnt); return 0; }但是用自己的逻辑判断就得不到结果了。