题解 | #日期差值#
日期差值
https://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c
#include<cstdio> int main() { int date1, date2; int mDay[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; while (scanf("%d%d", &date1, &date2) != EOF) { //确定起始日期和终止日期 if (date1 > date2) { int temp = date2; date2 = date1; date1 = temp; } //根据date求年、月、日 int y1 = date1 / 10000, m1 = (date1 % 10000) / 100, d1 = date1 % 100; int y2 = date2 / 10000, m2 = (date2 % 10000) / 100, d2 = date2 % 100; //计算日期差值 int totalDay = 1; //相差天数 int d = d1, m = m1, y = y1; while (y < y2 || m < m2 || d < d2) { //判断是否为闰年 if (y % 400 == 0 || y % 100 != 0 && y % 4 == 0) { mDay[2] = 29; } else { mDay[2] = 28; } ++d; if (d > mDay[m]) { d = 1; ++m; if (m > 12) { m = 1; ++y; } } ++totalDay; } printf("%d\n", totalDay); } }