如何编写一个程序来接收用户的输入,指定月份后能准确地输出该月份的天数,包括考虑閏年的情况?
时间: 2024-10-19 07:05:41 浏览: 23
编程实现从键盘上输入年份和月份,即可输出该页对应的天数含(闰年
要编写一个程序来接收用户输入的月份并计算该月的天数,考虑到闰年的影响,你需要使用C++的日期库或者其他自定义逻辑。这里我会提供一个简单的C++代码示例,利用`<ctime>`库中的`std::mktime()`和`std::difftime()`函数,以及判断闰年的规则。
```cpp
#include <iostream>
#include <ctime>
// 判断是否为闰年
bool is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main() {
int month, day;
// 获取用户输入的月份
std::cout << "Enter the month (1-12): ";
std::cin >> month;
if (month < 1 || month > 12) {
std::cerr << "Invalid month. Please enter a number between 1 and 12.\n";
return 1;
}
// 获取当前年份
time_t now = time(0);
struct tm* current_time = localtime(&now);
int current_year = current_time->tm_year + 1900;
switch (month) {
case 2: { // February
int days_in_month = is_leap_year(current_year) ? 29 : 28;
if (day > days_in_month) {
std::cerr << "Invalid day for February.";
} else {
std::cout << "February has " << days_in_month << " days.\n";
}
break;
}
case 1, 3, 5, 7, 8, 10, 12: { // Months with 31 days
std::cout << month << " has 31 days.\n";
break;
}
case 4, 6, 9, 11: { // Months with 30 days
std::cout << month << " has 30 days.\n";
break;
}
default: { // January
std::cout << "January has 31 days.\n";
}
}
return 0;
}
```
这个程序首先获取用户输入的月份,然后根据月份的不同,计算并输出相应的天数。对于2月,特别检查了是否为闰年,因为平年有28天,而闰年有29天。其他月份的天数则直接给出了固定的值。
阅读全文