打印年历表头设计一个函数实现如下功能:输入年份、月历组数,输出相应格式的年历表头。支持的月历组数为1、2、3、4、6、12。 年历格式附后。c++
时间: 2024-09-10 14:02:05 浏览: 154
VHDL多功能数字万年历
在C++中,你可以创建一个名为`generateCalendarHeader`的函数,用于生成指定年份和月份的年历表头。这里是一个简单的例子,它将按照常见的日历格式输出,包括星期几和数字格式:
```cpp
#include <iostream>
#include <iomanip>
// 定义一个结构体表示一周的日历
struct CalendarDay {
std::string weekday; // 星期几
int day; // 当前日期
};
void generateCalendarHeader(int year, int month, int num_months = 1) {
const std::vector<std::string> weekdays = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};
// 检查输入是否合法
if (num_months < 1 || num_months > 12 || month < 1 || month > 12 || year < 0) {
std::cout << "无效的输入!" << std::endl;
return;
}
for (int i = 1; i <= num_months; ++i) {
std::cout << "--\n";
std::cout << " " << std::setw(5) << std::right << i << ". " << std::left << "月 " << year << "\n";
// 输出星期几
for (const auto& week_day : weekdays) {
std::cout << std::setw(9) << week_day << ": ";
}
std::cout << "\n";
// 输出每一天的日期
for (int j = 1; j <= 7; ++j) {
if ((month == 2 && i == 2 && (year % 4 != 0 || (year % 100 == 0 && year % 400 != 0))) && j > 29) {
break; // 跳过闰年的2月29日
}
std::cout << std::setw(2) << static_cast<int>(std::date(year, month, j).day()) << " ";
}
std::cout << "\n"; // 下一行空格
}
}
int main() {
int year = 2023;
int month = 1; // 示例,你可以自定义年份和月份
generateCalendarHeader(year, month);
阅读全文