《算法笔记》3.4小节——入门模拟->日期处理 问题 A: 日期差值

把握今天,才能拥有明天!

难受~~~

#include <stdio.h>

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 isLeap(int x){
    if ((x % 4 == 0 && x % 100 != 0) || (x % 400 == 0)){
        return 1;
    }else return 0;
}

int main()
{
    int num1,num2,temp;
    int year1,year2,month1,month2,day1,day2;


    while(scanf("%d%d",&num1,&num2) != EOF){
        if(num1 > num2){
            temp = num1;
            num1 = num2;
            num2 = temp;
        }
        year1 = num1 / 10000,month1 = num1 % 10000 / 100,day1 = num1 % 100;
        year2 = num2 / 10000,month2 = num2 % 10000 / 100,day2 = num2 % 100;

        int cnt = 1;
        while(year1 < year2 || month1 < month2 || day1 < day2){
            day1++;
            if(day1 == month[month1][isLeap(year1)] + 1){
                month1++;
                day1 = 1;
            }
            if(month1 == 13){
                year1++;
                month1 = 1;
            }
            cnt++;
        }
        printf("%d\n",cnt);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_37507976/article/details/82926519