题目描述
有两个日期,求两个日期之间的天数,如果两个日期之间是连续的,则规定它们之间的天数为2天
输入格式:
有多组输入格式,每组数据有两行, 分别表示两个日期,形式为YYYYMMDD
输出格式:
每组数据输出一行,即生日差值。
解题思路:
需要考虑到闰年和平年。可提前定义一个二维数组表示闰年和平年
#include<iostream>
using namespace std;
int month[13][2]{
{0,0},
{31,31},//1
{28,29},//2
{31,31},//3
{30,30},//4
{31,31},//5
{30,30},//6
{31,31},//7
{31,31},//8
{30,30},//9
{31,31},//10
{30,30},//11
{31,31}//12
};
bool isLeap(int year) {//判断平年闰年
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return true;
}
return false;
}
int main() {
int time1, year1, month1, day1;
int time2, year2, month2, day2;
cin >> time1 >> time2;
if (time1 > time2) {//保证第一个日期小于第二个日期
int temp = time1;
time1 = time2;
time2 = temp;
}
day1 = time1 % 100;
month1 = time1 / 100 % 100;
year1 = time1 / 10000;
day2 = time2 % 100;
month2 = time2 / 100 % 100;
year2 = time2 / 10000;
int result = 1;
while (year1 < year2 || month1 < month2 || day1 < day2) {
day1++;
if (day1 == (month[month1][isLeap(year1)] + 1)) {//满当月天数
month1++;
day1 = 1;
}
if (month1 == 13) {//月份满12个月
year1++;
month1 = 1;
}
result++;
}
cout << result << endl;
system("pause");
return 0;
}