用c++依次输入年月日,输出这一天是该年的第几天。注意年月日合法性的判定和闰年的计算
时间: 2024-10-28 16:06:56 浏览: 22
在C++中,我们可以使用`cin`获取用户的输入,并结合日期相关的算法来实现这个功能。首先,我们需要确定用户输入的日期是否有效,即年份大于0、月份在1~12之间且日期在每个月的合法范围内。然后,我们需要处理闰年的计算,因为二月有28天或29天。下面是一个简单的示例程序:
```cpp
#include <iostream>
#include <cmath>
bool isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int daysInMonth(int month, int year) {
switch(month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
return 31;
case 4: case 6: case 9: case 11:
return 30;
case 2:
if (isLeapYear(year))
return 29;
else
return 28;
default:
throw std::invalid_argument("Invalid month");
}
}
int main() {
int year, month, day;
std::cout << "请输入年份(例如:2023): ";
std::cin >> year;
std::cout << "请输入月份(1-12): ";
std::cin >> month;
std::cout << "请输入日期(1-" << daysInMonth(month, year) << ") : ";
std::cin >> day;
// 验证输入合法性
if (month < 1 || month > 12 || day < 1 || day > daysInMonth(month, year)) {
std::cerr << "输入的日期无效!\n";
return 1;
}
int totalDays = 0;
for (int i = 1; i < month; ++i)
totalDays += daysInMonth(i, year);
totalDays += day - 1; // 加上前面的天数再加上当天
std::cout << "这一天是" << year << "年的第" << totalDays << "天。\n";
return 0;
}
```
阅读全文