3 条题解
-
0
#include <iostream> #include <iomanip> #include <string> using namespace std; // 获取某月的天数 int getDaysInMonth(int year, int month) { int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; return days[month - 1]; } // 计算某年某月1号是星期几 int getWeekday(int year, int month, int day) { if (month == 1 || month == 2) { month += 12; year--; } int weekday = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7; return weekday; } // 输出日历 void printCalendar(int year, int month) { // 获取当月天数 int daysInMonth = getDaysInMonth(year, month); // 获取1号是星期几(0=星期一, 6=星期日) int firstDayWeek = getWeekday(year, month, 1); // 输出星期标题 cout << "MON TUE WED THU FRI SAT SUN" << endl; // 输出第一行的空格(对齐用) // 每个日期占4个字符(一个空格+3个字符),第一个日期前不需要空格 for (int i = 0; i < firstDayWeek; i++) { cout << " "; // 4个空格,对应一个日期占位 } // 输出日期 for (int day = 1; day <= daysInMonth; day++) { // 右对齐,宽度为3,让个位与字母对齐 cout << setw(3) << day; // 如果不是周日,输出空格分隔 if ((firstDayWeek + day) % 7 != 0) { cout << " "; } else { // 周日换行 cout << endl; } } // 如果最后一行没有换行,补一个换行 if ((firstDayWeek + daysInMonth) % 7 != 0) { cout << endl; } } int main() { int month; cin >> month; printCalendar(2025, month); return 0; }
信息
- ID
- 3409
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 158
- 已通过
- 51
- 上传者