You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.7 KiB

2 years ago
#include <bits/stdc++.h>
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;
}