日期差值
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; }

浙公网安备 33010602011771号