本文共 1554 字,大约阅读时间需要 5 分钟。
#define _CRT_SECURE_NO_WARNINGS#includeint isleap(int year); //判断是否为闰年int month_day(int year, int month); //返回某月的天数int month_first_day_week(int year, int month); //返回某月的第一天是星期几void print_calendar(int year, int month); //打印某年某月日历int main() { int year, month; scanf("%d %d", &year, &month); print_calendar(year, month); return 0;}int isleap(int year) { if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) return 1; else return 0;}int month_day(int year, int month) { switch (month) { case 2: if (isleap(year)) { return 29; } else { return 28; } break; case 4: case 6: case 9: case 11: return 30; break; case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; break; default: break; }}int month_first_day_week(int year, int month) { int week = 1; for (int i = 1900; i < year; i++) { ++week; // 365 % 7 = 1 if (isleap(i)) { ++week; } } for (int i = 1; i < month; i++) { week += month_day(year, i); } week %= 7; return week;}void print_calendar(int year, int month) { int days, day_week; int i = 1; int day = 1; printf("%4d-%02d\n", year, month); printf("Mon Tue Wed Thu Fri Sat sun\n\n"); days = month_day(year, month); day_week = month_first_day_week(year, month); if (day_week == 0) { day_week = 7; } while (i < day_week) { printf(" "); i++; } while (day <= days) { printf("%-6d", day); day++; i = i % 7; if (i == 0) { printf("\n\n"); } //i = i % 7; i++; } if (i != 0) { printf("\n"); }}
转载地址:http://qtxmb.baihongyu.com/