#include "main.h"
char* weeks[7] = { "SUM","TUE","WED","THU","ERI","SAT","MON" };
void printHead() {
printf(RED);
printf(" 日历\n");
printf("****************************************************\n");
for (int i = 0; i < 7; i++) {
printf("%s\t", weeks[i]);
}
printf("\n");
}
void printTail() {
printf("****************************************************");
}
void pirntDate(int year, int month,int day) {
printHead();
int x = 0;
int year1 = 1900;
int month1 = 1;
int date1 = 1;
int date2 = 1;
month1 -= 1;
month -= 1;
int a[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
int i = 0;
int sumdays = 0;//总日期
//计算中间年份的天数
for (i = year1; i < year; i++) {
sumdays += 365;
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
sumdays += 1;
}
//计算现在年过去多少天了
if (year1 % 4 == 0 && year1 % 100 != 0 || year1 % 400 == 0) {
if (month1 + 1 > 2)sumdays -= 1;
}
for (i = 0; i < month1; i++) {
sumdays -= a[i];
}sumdays -= date1;
//计算本年过去多少天了
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
if (month + 1 > 2)sumdays += 1;
}
for (i = 0; i < month; i++) {
sumdays += a[i];
}
sumdays += date2;
int first = sumdays % 7;
//for (int i = 0; i < first; i++) {
// printf("\t");
//}
for (int i = (a[month]-first); i < a[month]+1; i++) {
printf("%d\t", i);
}
int space = 0;
for (int i = 1; i <= a[month]; i++) {
if (i == day) {
printf(NONE);
printf("%d\t", i);
printf(RED);
}
else printf("%d\t", i);
if ((i+sumdays)%7-6==0) {
printf("\n");
space = i+1;
}
}
if ((first + space+1) % 7 != 0) {
for (int i = 1; i < 7-((first + space + 1) % 7); i++) {
printf("%d\t", i);
if ((i + sumdays+a[month]) % 7-6 == 0) {
printf("\n");
break;
}
}
}
printTail();
}
int main() {
int year, month, day;
scanf("%d %d %d", & year, &month,&day);
pirntDate(year, month,day);
return 0;
}
//头文件
#ifndef __MAIN_H__
#define __MAIN_H__
#define NONE "\033[m"
#define RED "\033[0;32;31m"
#define LIGHT_RED "\033[1;31m"
#define GREEN "\033[0;32;32m"
#define LIGHT_GREEN "\033[1;32m"
#define BLUE "\033[0;32;34m"
#define LIGHT_BLUE "\033[1;34m"
#define DARY_GRAY "\033[1;30m"
#define CYAN "\033[0;36m"
#define LIGHT_CYAN "\033[1;36m"
#define PURPLE "\033[0;35m"
#define LIGHT_PURPLE "\033[1;35m"
#define BROWN "\033[0;33m"
#define YELLOW "\033[1;33m"
#define LIGHT_GRAY "\033[0;37m"
#define WHITE "\033[1;37m"
#include<stdio.h>
#endif