题解 | 日期差值
日期差值
https://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
void nextday(int& y, int& m, int& d) {
int dayMonth[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
bool isLeap = y % 400 == 0 || y % 4 == 0 && y % 100 != 0;
if (isLeap) {
dayMonth[2] = 29;
}
else {
dayMonth[2] = 28;
}
d++;
if (d > dayMonth[m]) {
m++;
d = 1;
}
if (m > 12) {
m = 1;
y++;
}
}
int main() {
int date1, date2;
while (cin >> date1 >> date2) {
//这里有点问题,题目中没说那个日期在前哪个日期在后,所以要先加一个判断,让date1是小日期,date2是大日期
if (date1 > date2) {
swap(date1, date2);
}
int day = date1 % 100;
date1 /= 100;
int month = date1 % 100;
int year = date1 / 100;
int res = 1;
while (year * 10000 + month * 100 + day != date2) {
nextday(year, month, day);
res++;
}
cout << res << endl;
}
return 0;
}