不爱生姜不吃醋⭐️
如果本文有什么错误的话欢迎在评论区中指正
与其明天开始,不如现在行动!
日期处理的问题总是会让很多人感到头疼,因为在这种问题中,总是会需要处理平年和闰年(由此产生的二月的天数区别)、大月和小月的问题,因此细节比较繁杂,但是只要细心处理细节,一般都能很好的解决这类问题。
题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的,则规定他们之间的天数为两天。
输入格式
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出格式
每组数据输出一行,即日期差值。
输入样例
20130101
20130105
输出样例
5
#include
int month[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 isLeap(int year){
return ((year % 4 == 0) && (year % 100 == 0)) || (year % 400 == 0);
}
int main() {
int date1, year1, month1, day1;
int date2, year2, month2, day2;
scanf("%d%d", &date1, &date2);
if (date1 > date2) {
int temp = date1;
date1 = date2;
date2 = temp;
}
year1 = date1 / 10000, month1 = date1 % 10000 / 100, day1 = date1 % 100;
year2 = date2 / 10000, month2 = date2 % 10000 / 100, day2 = date2 % 100;
int count = 1;
while (year1 < year2 || month1 < month2 || day1 < day2)
{
day1++;
if (day1 == month[month1][isLeap(year1)] + 1){
month1++;
day1 = 1;
}
if(month1 == 13){
year1++;
month1 = 1;
}
count++;
}
printf("%d", count);
return 0;
}
文章中代码的编写使用的都是C/C++基础知识,多加练习熟能生巧。
本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家!!!