不爱生姜不吃醋⭐️
如果本文有什么错误的话欢迎在评论区中指正
与其明天开始,不如现在行动!
文章目录
- 🌴前言
- 🌴日期处理
- 1.题目(codeup 1928)
- 2.思路
- 3.代码实现
- 🌴总结
🌴前言
日期处理的问题总是会让很多人感到头疼,因为在这种问题中,总是会需要处理平年和闰年(由此产生的二月的天数区别)、大月和小月的问题,因此细节比较繁杂,但是只要细心处理细节,一般都能很好的解决这类问题。
🌴日期处理
1.题目(codeup 1928)
题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的,则规定他们之间的天数为两天。
输入格式
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出格式
每组数据输出一行,即日期差值。
输入样例
20130101
20130105
输出样例
5
2.思路
- 首先要先定义大月小月,还要判断是否为闰年
- 用三个变量将输入的日期分为年月日的形式
- 定义一个计数器,用小的日期每天加一直到日期一和日期二相同
- 计数器的数字就是像相差的天数
3.代码实现
#include <cstdio>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++基础知识,多加练习熟能生巧。
本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家😘!!!