描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天
输入描述:
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出描述:
每组数据输出一行,即日期差值
输入:
20110412
20110422
输出:
11
代码:
#include <iostream>
using namespace std;
int mouth[13][2] = { //平年和闰年的天数
{0, 0}, {31, 31}, {28, 29}, {31, 31}, {30, 30}, {31, 31}, {30, 30}, {31, 31}, {31, 31},
{30, 30}, {31, 31}, {30, 30}, {31, 31}
};
bool run(int y){//判断是否是闰年
return (y%4==0 && y%100 != 0 )||(y%400==0);
}
int main() {
int a, b;
while (cin >> a >> b) {
int y1 = a / 10000;
int m1 = a % 10000 / 100;
int d1 = a % 100;
int y2 = b / 10000;
int m2 = b % 10000 / 100;
int d2 = b % 100;
int ans = 1;
while ((y1 != y2) || (m1 != m2) || (d1 != d2)) {
d1++;
if (d1 > mouth[m1][run(y1)]) {
m1++;
d1 = 1;
}
if (m1 > 12) {
y1++;
m1 = 1;
}
ans++;
}
cout << ans << endl;
}
return 0;
}
思路:
我一开始做的时候想的就是做差值,后来发现考虑的情况太多了,后来看了题解
原来可以通过每次加一天的方式,让两个日期相等,从而算出差值,秒!
也学习到了一种 建立二维数组的方式,从而得出平年闰年的每月的天数