日期差值

C++环境下编译

算法思想日期不断加1,直至两个日期相等

#include <cstdio>

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

bool isLeap(int year){
    return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
}

int main(int argc, const char * argv[]) {
    // insert code here...
    int time1,year1,month1,day1;
    int time2,year2,month2,day2;
    
    while(scanf("%d%d",&time1,&time2) != EOF){
        if(time1 > time2){
            int temp = time1;
            time1 = time2;
            time2 = temp;
        }
        
        year1 = time1 / 10000; month1 = time1 % 10000 / 100; day1 = time1 % 100;
        year2 = time2 / 10000; month2 = time2 % 10000 / 100; day2 = time1 % 100;
        int ans = 1;    //记录结果
        
        //第一个日期到第二个日期之间进入循环
        //!(year1 == year2) && (month1 == month2) && (day1 == day2)
        while((year1 < year2) || (month1 < month2) || (day1 < day2)){
            day1++;
            if(day1 == month[month1][isLeap(year1)] + 1){
                month1++; day1 = 1;
            }
            if(month1 == 13){
                year1++; month1 = 1;
            }
            ans++;      //累计
        }
        printf("日期差值:%d\n",ans);
    }
    return 0;
}

 

posted @ 2019-11-05 19:20  炳文  阅读(163)  评论(0)    收藏  举报