输入三个整数 分别代表年月日 计算该日期是该年的第几天 注意闰年第2月是29天
时间: 2024-11-15 21:33:58 浏览: 2
要计算一个给定日期是该年的第几天,我们需要考虑以下几点:
1. 判断是否是闰年。
2. 根据月份和天数累加计算总天数。
首先,我们需要一个函数来判断某一年是否是闰年。根据规则,如果年份能被4整除但不能被100整除,或者能被400整除,那么这一年就是闰年。
然后,我们需要一个数组来存储每个月的天数。对于平年,这个数组是固定的;对于闰年,2月的天数需要调整为29天。
最后,我们遍历从1月到输入月份的前一个月,将每个月的天数累加起来,再加上输入月份的天数,就得到了该日期是该年的第几天。
下面是实现这一逻辑的C++代码:
```cpp
#include <iostream>
using namespace std;
// 判断是否是闰年
bool isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
return true;
} else {
return false;
}
}
// 计算某日期是该年的第几天
int dayOfYear(int year, int month, int day) {
// 每个月的天数(平年)
int daysInMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// 如果是闰年,修改2月的天数
if (isLeapYear(year)) {
daysInMonth[1] = 29;
}
// 累加前几个月的天数
int totalDays = 0;
for (int i = 0; i < month - 1; ++i) {
totalDays += daysInMonth[i];
}
// 加上当前月的天数
totalDays += day;
return totalDays;
}
int main() {
int year, month, day;
cout << "请输入年月日(用空格分隔):";
cin >> year >> month >> day;
int result = dayOfYear(year, month, day);
cout << "该日期是该年的第 " << result << " 天" << endl;
return 0;
}
```
### 示例运行:
假设输入 `2023 10 5`,程序会输出:
```
该日期是该年的第 278 天
```
### 解释:
- 2023年不是闰年,所以2月有28天。
- 从1月到9月的天数分别是:31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 = 273天。
- 加上10月的5天,总共是278天。
阅读全文