打印月历:输入年月,输出该月的日历,可以参考年历中月份的格式。

关注引自免费微信小程序:皆我百晓生
为了创建一个C++程序来打印月历,你需要按照以下步骤操作:
以下是完整的C++代码实现:
#include <iostream>
#include <string>
// 函数声明
int get_first_day(int year, int month);
void print_month(const int year, const int month);
int main() {
int year, month;
std::cout << "Enter the year: ";
std::cin >> year;
std::cout << "Enter the month: ";
std::cin >> month;
print_month(year, month);
return 0;
}
// 计算给定年份和月份第一天是星期几
int get_first_day(int year, int month) {
static const int days_in_month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int first_day = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) ? 6 : 0; // 判断是否为闰年
if (month > 1) {
for (int i = 0; i < month - 1; ++i)
first_day += days_in_month[i];
}
return (first_day + 1) % 7; // 返回的是0到6,分别对应周日到周六
}
// 打印月历
void print_month(const int year, const int month) {
int days_in_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month == 2 && (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))) {
days_in_month[1] = 29; // 如果是闰年的二月,增加一天
}
int first_day = get_first_day(year, month);
int day_count = 1;
std::cout << std::setw(10) << std::left << month << " " << year << "\n";
std::cout << "Su Mo Tu We Th Fr Sa\n";
for (int i = 0; i < first_day; ++i) {
std::cout << " ";
}
for (int i = 1; i <= days_in_month[month - 1]; ++i) {
std::cout << std::setw(2) << std::right << day_count << " ";
if ((day_count++) % 7 == 0) {
std::cout << "\n";
}
}
}
这个程序首先会提示用户输入年份和月份,然后调用print_month函数来打印相应的月历。在get_first_day函数中,我们计算了给定年份和月份的第一个日期是星期几。print_month函数则根据这些信息来打印出月历的结构。注意,这里没有处理非法输入的情况,例如无效的年份或月份,你可以根据需要添加错误检查。