69 lines
1.7 KiB
C++
69 lines
1.7 KiB
C++
#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;
|
||
} |