题目描述 当某一年的年份是4的倍数但不是100的倍数,或者是400的倍数,则这一年称之为闰年,否则称为平年。闰年的2月份有29天,而平年的2月份有28天。 现给定两个日期,试求这两个日期之间相距多少天。 输入格式 输入两行。 第一行三个正整数 � 1 , � 1 , � 1 y1,m1,d1 表示 � 1 y1年 � 1 m1月 � 1 d1 日。 第二行三个正整数 � 2 , � 2 , � 2 y2,m2,d2 表示 � 2 y2年 � 2 m2月 � 2 d2 日。 输出格式 输出一个数,表示两个日期之间相距多少天,保证日期合法且第一个日期不在第二个日期之后。 样例 输入数据 1 2000 2 2 2000 2 3 输出数据 1 1
时间: 2024-04-16 12:27:20 浏览: 175
```cpp
#include <iostream>
using namespace std;
// 判断是否为闰年
bool isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return true;
}
return false;
}
// 计算两个日期之间相差的天数
int getDaysBetweenDates(int y1, int m1, int d1, int y2, int m2, int d2) {
// 每个月的天数
int monthDays[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 如果是闰年,2月份的天数为29
if (isLeapYear(y1)) {
monthDays[1] = 29;
}
int days = 0;
// 先计算 y1 年的剩余天数
for (int i = m1 - 1; i < 12; i++) {
if (i == m1 - 1) {
days += monthDays[i] - d1 + 1;
} else {
days += monthDays[i];
}
}
// 计算 y2 年之前的天数
for (int year = y1 + 1; year < y2; year++) {
if (isLeapYear(year)) {
days += 366;
} else {
days += 365;
}
}
// 计算 y2 年的天数
for (int i = 0; i < m2 - 1; i++) {
if (i == m2 - 2) {
days += d2;
} else {
days += monthDays[i];
}
}
return days;
}
int main() {
int y1, m1, d1;
cin >> y1 >> m1 >> d1;
int y2, m2, d2;
cin >> y2 >> m2 >> d2;
int days = getDaysBetweenDates(y1, m1, d1, y2, m2, d2);
cout << days << endl;
return 0;
}
```
以上是使用 C++ 编写的程序,它接受两个日期作为输入,计算这两个日期之间相差的天数,并将结果输出。程序中使用了 `isLeapYear` 函数来判断是否为闰年,然后根据每个月的天数来计算相差的天数。最后将计算得到的天数输出。
阅读全文