#include
#include

// 计算指定年份指定月份的天数
int daysInMonth(int year, int month) {
if (month == 2) { // 二月
if ((year % 4 == 0 && year % 100!= 0) || year % 400 == 0) {
return 29; // 闰年
} else {
return 28; // 平年
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30; // 小月
} else {
return 31; // 大月
}
}

// 打印日历
void printCalendar(int year, int month) {
std::cout << std::setw(25) << year << " 年 " << month << " 月" << std::endl;
std::cout << “日 一 二 三 四 五 六” << std::endl;

int dayOfWeek = 1;  // 1 表示星期一

// 计算指定年月第一天是星期几
int firstDayOfMonth = 0;
int totalDaysFrom1900 = 0;
for (int y = 1900; y < year; y++) {
    for (int m = 1; m <= 12; m++) {
        totalDaysFrom1900 += daysInMonth(y, m);
    }
}
for (int m = 1; m < month; m++) {
    totalDaysFrom1900 += daysInMonth(year, m);
}
firstDayOfMonth = (totalDaysFrom1900 + 1) % 7;

// 打印空格,直到第一天的位置
for (int i = 0; i < firstDayOfMonth; i++) {
    std::cout << "   ";
}

int days = daysInMonth(year, month);
for (int day = 1; day <= days; day++) {
    std::cout << std::setw(3) << day;
    if ((day + firstDayOfMonth) % 7 == 0) {
        std::cout << std::endl;
    }
}

std::cout << std::endl;

}

int main() {
int year, month;
std::cout << "请输入年份: ";
std::cin >> year;
std::cout << "请输入月份: ";
std::cin >> month;

printCalendar(year, month);

return 0;

}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐