C++ 实现:输入年月日计算该日在本年是第几天(含闰年判断)
为了实现这个功能,我们需要定义一个结构体来存储日期信息,并编写一个函数来计算给定日期在一年中的第几天。我们还需要考虑闰年的情况。以下是完整的C++代码示例: ```cpp #include <iostream> using namespace std; // 定义一个结构体来存储日期 struct Date { int year; int month; int day; }; // 判断是否为闰年 bool isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } // 计算某一天在一年中的第几天 int dayOfYear(Date date) { // 每个月的天数(非闰年) int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 如果是闰年,2月有29天 if (isLeapYear(date.year)) { daysInMonth[1] = 29; } int dayOfYear = 0; for (int i = 0; i < date.month - 1; ++i) { dayOfYear += daysInMonth[i]; } dayOfYear += date.day; return dayOfYear; } int main() { Date date; cin >> date.year >> date.month >> date.day; int result = dayOfYear(date); cout << result << endl; return 0; } ``` 代码解释 1. 结构体定义: ```cpp struct Date { int year; int month; int day; }; ``` 定义了一个结构体 `Date`,用于存储年、月、日。 2. 判断闰年: ```cpp bool isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } ``` 这个函数用于判断给定的年份是否为闰年。闰年的条件是:年份能被4整除但不能被100整除,或者能被400整除。 3. 计算第几天: ```cpp int dayOfYear(Date date) { int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if (isLeapYear(date.year)) { daysInMonth[1] = 29; } int dayOfYear = 0; for (int i = 0; i < date.month - 1; ++i) { dayOfYear += daysInMonth[i]; } dayOfYear += date.day; return dayOfYear; } ``` 这个函数计算给定日期在一年中的第几天。首先定义一个数组 `daysInMonth` 来存储每个月的天数(假设是非闰年)。如果年份是闰年,则将2月的天数改为29天。然后通过累加前几个月的天数和当前月份的天数来计算总天数。 4. 主函数: ```cpp int main() { Date date; cin >> date.year >> date.month >> date.day; int result = dayOfYear(date); cout << result << endl; return 0; } ``` 主函数读取用户输入的年、月、日,调用 `dayOfYear` 函数计算结果,并输出结果。 测试用例 输入: ``` 2024 3 1 ``` 输出: ``` 61 ``` 这个程序可以正确处理闰年和非闰年的情况,并计算出给定日期在一年中的第几天。 ######[AI写代码神器 | 894点数解答 | 2024-10-30 16:23:21]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)380
- HTML与JS代码纠错:轻松获取含星期的本地时间(字节豆包 | 284点数解答 | 2024-08-06 13:24:39)299
- 去掉代码备注:计算 f(a) + f(b) + f(c) 的简洁代码实现(字节豆包 | 150点数解答 | 2026-03-14 20:04:24)18
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)350
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)98
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)56
- C++ 实现:判断两正整数乘积能否被 5 整除(字节豆包 | 119点数解答 | 2026-01-23 19:48:50)56
- Python 实现:判断两正整数乘积能否被 5 整除(字节豆包 | 86点数解答 | 2026-01-23 19:49:28)41
- JS 代码:判断“red”改值为“green”并弹窗显示结果( | 176点数解答 | 2024-05-20 21:33:04)432
- 用 JS 代码巧妙判断 a 与 b 关系:输出对应结果 ( | 47点数解答 | 2024-05-20 22:10:14)341
- Python 实现超有趣大鱼吃小鱼游戏:玩家鱼进化与生存挑战! (讯飞星火 | 390点数解答 | 2024-05-31 11:45:36)260
- Python 实现超有趣大鱼吃小鱼游戏,从初始 1 级开启进化之旅!( | 767点数解答 | 2024-05-31 11:50:29)260