编写万年历程序,输入年、月,输出该月的日历表。输入年,则输出该年的日历表。
时间: 2024-10-23 18:10:32 浏览: 31
编写一个万年历程序,首先你需要处理的是获取用户的年份和月份输入,然后根据这些信息计算并显示相应的日历。这里我将提供一个简单的C++代码示例,使用`<ctime>`库来帮助我们生成日历:
```cpp
#include <iostream>
#include <ctime>
// 函数用来获取当前月份的日历
void print_calendar(int year, int month) {
std::cout << "Month: " << month << ", Year: " << year << "\n";
std::cout << "-------------------------------------------------\n";
// 获取当前时间
std::time_t now = time(0);
struct tm* calendar_date = localtime(&now);
// 如果输入的月份或年份无效,我们可以调整为当前日期
if (month <= 0 || month > 12 || year < 1) {
std::cout << "Invalid input! Using current date.\n";
month = calendar_date->tm_mon + 1;
year = calendar_date->tm_year + 1900;
}
// 初始化一周的日历行
for (int i = 0; i < 7; ++i) {
if (i == 0 && calendar_date->tm_wday != 0) { // 假设星期天是一周的开始
std::cout << " ";
} else {
std::cout << std::setw(2) << static_cast<int>(calendar_date->tm_wday + 1); // 星期几
}
calendar_date->tm_mday += 1;
if (calendar_date->tm_mday > static_cast<int>(days_in_month(year, month))) {
std::cout << "\n";
calendar_date++;
} else {
std::cout << ' ';
}
}
std::cout << "\n";
}
// 获取给定年份和月份的总天数
int days_in_month(int year, int month) {
switch (month) {
case 2:
return is_leap_year(year) ? 29 : 28;
case 4:
case 6:
case 9:
case 11:
return 30;
default:
return 31;
}
}
// 判断是否为闰年
bool is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main() {
int year, month;
std::cout << "Enter the year and month (e.g., 2023 1): ";
std::cin >> year >> month;
print_calendar(year, month);
return 0;
}
```
阅读全文