OJ - 日期差值
题目难度:中等
题目描述:有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。
输入描述:有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出描述:每组数据输出一行,即日期差值
示例:
输入:
20110412
20110422输出:
11
解题思路
让小的日期(y1、m1、d1)不断往后++,直到等于大的日期(y2、m2、d2),统计加了多少次,就是差值
#include<iostream>
using namespace std;
// 获取某年某月的天数
int GetDays(int year, int month)
{
// 默认为平年
static int days[] = {
0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// 如果是闰年的2月
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
if (month == 2)
{
return 29;
}
}
// 返回天数
return days[month];
}
// 计算两个日期的差值
int SubDate(int& date1, int& date2)
{
// 分别取出两个日期的年月日
int y1 = date1 / 10000;
int m1 = (date1