题目描述:
有两个日期,求两个日期之间的天数,如果两个日期是连续的,则规定它们之间的天数为2天。
样式输入:
20130101
20130105
样式输出:
5
思路:
- 不妨假设第一个日期早于第二个日期(否则较换即可)。
- 一个比较直接的思路,就是让第一个日期不断加1天,直到第一个日期等于第二个日期为止,即可统计出答案。如果当加了一天之后天数 d 等于当前月份 m 所拥有的天数加1,那么就令月份 m 加1、同时置天数 d为1号(即把日期变为下一个月的1号);如果此时月份变为13,那么就令年份 y 加1、同时置月份 m 为 1 月(即把日期变为下一年的 1 月)。
- 为了方便直接去除每一个月的天数,不妨给定一个二维数组 int month[13][2],用来存放每个月的天数,其中第二维为0表示平年,第二维为1表示闰年。
- 如果想要加快速度,可以先把第一个日期的年份不断加 1 ,直到与第二个日期的年份之间相差为 1 为止,期间根据平年或是闰年来累加 365 天或者 366 天即可。
实现代码:
#include <iostream>
using