título Descripción
Hay dos fechas, encuentra el número de días entre dos fechas, si las dos fechas es continua definimos el número de días entre ellos por dos días.
entrada
Una pluralidad de conjuntos de datos, cada uno con dos líneas de datos, respectivamente, representan dos fechas, la forma AAAAMMDD
exportación
Cada línea de salida de datos, es decir, la diferencia entre la fecha
entrada de la muestra
20130101
20130105
Ejemplo de salida
5
#include <stdio.h>
int isLeapyear(int year) //判断是否是闰年
{
if((year%4==0&&year%100!=0)||(year%400==0))
return 1;
else
return 0;
}
int main()
{
//month存储天数,一维代表平年,二维代表闰年
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,time2,y1,y2,m1,m2,d1,d2;
while(scanf("%d %d",&time1,&time2)!=EOF) //输入两个年份
{
if(time1>time2) //如果第一个年份大于第二个年份,则交换
{
int tmp;
tmp=time1;
time1=time2;
time2=tmp;
}
y1=time1/10000; //得到年份
y2=time2/10000;
m1=(time1%10000)/100; //得到月份
m2=(time2%10000)/100;
d1=time1%100; //得到日
d2=time2%100;
int count=1;
while(y1<y2||m1<m2||d1<d2) //日期一直执行加1操作,直到年月日均相同
{
d1++; //执行天数加1
if(d1==month[m1][isLeapyear(y1)]+1) //判断日是否等于当年月份最后一天
{
m1++; //月份加1
d1=1; //日期变为1号
}
if(m1==13) //月份是否满12个月
{
y1++; //年份加1
m1=1; //月份变为1月份
}
count++; //统计相差结果
}
printf("%d\n",count);
}
return 0;
}