#include using namespace std; /* 2015 1 4 */ int months_1[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int months_2[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool LeapYear(int year) { return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0); } /* 2023 1 1 --> 7 2023 7 1 --> 6 2023 7 7 2023 5 7 --->1? */ int main() { // 1、是不是需要判断闰年? int year, month; int ydxq, month_1_xq; // 2、year年1月1日 是星期xq cin >> year >> month >> ydxq; cout << "S M T W T F S" << endl; int days = 0; if (LeapYear(year)) { // 比如month=5,要的是5月1号的,应该是1~4月份相加的和 for (int i = 1; i < month; i++) days += months_2[i]; } else { for (int i = 1; i < month; i++) days += months_1[i]; } // days含义:days就是当前年份的第几天-1 month_1_xq = (ydxq + days) % 7; // 是指定月份的第1天是星期几0~6 // cout << month_1_xq << endl; // 打空格 for (int i = 1; i <= month_1_xq; i++) cout << " "; // 打第一行的剩余日期 // 1~ 6 // 2~ 5 // 3~ 4 // 4~ 3 // 5~ 2 // 6~ 1 // 0~ 7 for (int i = 1; i <= 7 - month_1_xq; i++) printf("%-4d", i); cout << endl; int this_month_days = 0; if (LeapYear(year)) { this_month_days = months_2[month]; } else { this_month_days = months_1[month]; } int cnt = 0; for (int i = 7 - month_1_xq + 1; i <= this_month_days; i++) { cnt++; printf("%-4d", i); if (cnt % 7 == 0) cout << endl; } return 0; }