本文共 2037 字,大约阅读时间需要 6 分钟。
给定两个日期,求出两个日期的差值,如果两个日期是连续的,则规定它们之间的天数为两天。
样例输入
20130101 20130105样例输出
5#include#include using namespace std;bool isLeapYear(int year) { if (year%400==0 || (year%4==0 && year%100!=0)) { return true; } return false;}void split(int date, int &y, int &m, int &d) { y = date/10000; m = (date%10000)/100; d = date%100;}int dayOfYear(int date) { int year, month, day; int res = 0; split(date, year, month, day); if (isLeapYear(year)) { switch(month) { case 12: res += 30; case 11: res += 31; case 10: res += 30; case 9: res += 31; case 8: res += 31; case 7: res += 30; case 6: res += 31; case 5: res += 30; case 4: res += 31; case 3: res += 29; case 2: res += 31; case 1: res += day; break; } } else { switch(month) { case 12: res += 30; case 11: res += 31; case 10: res += 30; case 9: res += 31; case 8: res += 31; case 7: res += 30; case 6: res += 31; case 5: res += 30; case 4: res += 31; case 3: res += 28; case 2: res += 31; case 1: res += day; break; } } return res;}int main() { int date1, y1, m1, d1; int date2, y2, m2, d2; cin >> date1; cin >> date2; if (date1 > date2) { date1 = date1 ^ date2; date2 = date1 ^ date2; date1 = date1 ^ date2; } split(date1, y1, m1, d1); split(date2, y2, m2, d2); int res = 1; for (int i = y1; i < y2; i++) { if (isLeapYear(i)) { res += 366; } else { res += 365; } } res -= dayOfYear(date1); res += dayOfYear(date2); cout << res << endl; return 0;}
转载地址:http://iicpn.baihongyu.com/