C语言实现月历打印:计算并输出指定年份和月份的月历
#include <stdio.h>
int get_weekday(int year, int month, int day) { if (month == 1 || month == 2) { month += 12; year--; } int c = year / 100; year %= 100; int week = year + year / 4 + c / 4 - 2 * c + 26 * (month + 1) / 10 + day - 1; week = (week % 7 + 7) % 7; return week; }
void Calendar(int year, int month) { printf(' Mo Tu We Th Fr Sa Su\n');
int days[] = {31,28,31,30,31,30,31,31,30,31,30,31};
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days[1] = 29;
}
int weekday = get_weekday(year, month, 1);
for (int i = 0; i < weekday; i++) {
printf(' ');
}
for (int i = 1; i <= days[month-1]; i++) {
printf('%2d', i);
weekday = (weekday + 1) % 7;
if (weekday == 0) {
printf('\n');
} else {
printf(' ');
}
}
if (weekday != 0) {
printf('\n');
}
}
int main() { int year, month; scanf('%d %d', &year, &month); Calendar(year, month); return 0; }
原文地址: https://www.cveoy.top/t/topic/m3SB 著作权归作者所有。请勿转载和采集!