Codeup cementerio - Una pregunta: Fecha de diferencia

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;
}

 

Publicados 462 artículos originales · ganado elogios 55 · vistas 320 000 +

Supongo que te gusta

Origin blog.csdn.net/LY_624/article/details/88780303
Recomendado
Clasificación