c语言打印月历
时间: 2023-07-02 14:17:32 浏览: 64
下面是使用 C 语言打印月历的示例代码:
```
#include <stdio.h>
int main() {
int year, month, day;
int days_of_month[] = {31,28,31,30,31,30,31,31,30,31,30,31};
char *months[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
printf("Enter year and month (format: yyyy mm): ");
scanf("%d %d", &year, &month);
// Check if it's a leap year
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days_of_month[1] = 29;
}
// Print month and year header
printf("\n %s %d\n", months[month-1], year);
printf("--------------------\n");
printf(" Su Mo Tu We Th Fr Sa\n");
// Find the day of the week of the first day of the month
day = 1;
for (int i = 1900; i < year; i++) {
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
day += 366;
} else {
day += 365;
}
}
for (int i = 0; i < month-1; i++) {
day += days_of_month[i];
}
int first_day_of_month = day % 7;
// Print calendar
int days_in_month = days_of_month[month-1];
for (int i = 0; i < first_day_of_month; i++) {
printf(" ");
}
for (int i = 1; i <= days_in_month; i++) {
printf("%3d", i);
if ((i + first_day_of_month) % 7 == 0 || i == days_in_month) {
printf("\n");
} else {
printf(" ");
}
}
return 0;
}
```
其中,`days_of_month` 存储每个月的天数,`months` 存储月份的字符串表示。用户输入年份和月份后,程序会计算该月的第一天是星期几,然后按照日历格式打印出来。需要注意的是,该程序没有进行输入的合法性检查,实际应用中建议加上相应的代码。