题解 | #日期差值#

日期差值

https://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c

#define _CRT_SECURE_NO_WARNINGS
//很简单的思路,代码比较粗糙,我居然搞反了闰年和平年的天数,弄了半天,服了
#include <iostream>
#include <string>
#include <stdlib.h>

using namespace std;

int day(string data) {
	return atoi(data.substr(6,2).c_str());
}

int month(string data) {
	return atoi(data.substr(4, 2).c_str());
}

int year(string data) {
	return atoi(data.substr(0, 4).c_str());
}

int yearday(int year) {
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
		return 366;
	}
	else {
		return 365;
	}
}

int main() {
	int days[] = { 31, 29 , 31 ,30 , 31, 30 , 31, 31, 30, 31, 30, 31 };
	int i, res = 0;
	string data1;
	string data2;
	while (cin >> data1) {
		cin >> data2;
		int day1 = day(data1);
		int day2 = day(data2);

		int month1 = month(data1);
		int month2 = month(data2);

		int year1 = year(data1);
		int year2 = year(data2);

		if ((year2 % 4 == 0 && year2 % 100 !=0) || year2 % 400 == 0){
			days[1] = 29;
		}
		else {
			days[1] = 28;
		}

		for (i = month1-1; i < month2-1; i++) {

			res += days[i];
		}

		for (i = year1; i < year2; i++) {
			res += yearday(i);
		}

		res = res + day2 - day1 + 1;

		cout << res << endl;
		}
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务