用c语言打印年历
时间: 2023-11-28 19:51:06 浏览: 34
以下是一个简单的示例程序,可以打印某一年的年历,你可以根据需要进行修改和优化:
```c
#include <stdio.h>
int main() {
int year, month, day, weekday, days_in_month;
int i, j;
printf("请输入年份: ");
scanf("%d", &year);
// 计算该年1月1日是星期几
weekday = 1 + (year - 1) * 365 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400;
weekday %= 7;
for (month = 1; month <= 12; month++) {
switch (month) {
case 1:
printf("一月\n");
days_in_month = 31;
break;
case 2:
printf("二月\n");
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days_in_month = 29;
} else {
days_in_month = 28;
}
break;
case 3:
printf("三月\n");
days_in_month = 31;
break;
case 4:
printf("四月\n");
days_in_month = 30;
break;
case 5:
printf("五月\n");
days_in_month = 31;
break;
case 6:
printf("六月\n");
days_in_month = 30;
break;
case 7:
printf("七月\n");
days_in_month = 31;
break;
case 8:
printf("八月\n");
days_in_month = 31;
break;
case 9:
printf("九月\n");
days_in_month = 30;
break;
case 10:
printf("十月\n");
days_in_month = 31;
break;
case 11:
printf("十一月\n");
days_in_month = 30;
break;
case 12:
printf("十二月\n");
days_in_month = 31;
break;
}
printf("日 一 二 三 四 五 六\n");
for (i = 0; i < weekday; i++) {
printf(" ");
}
for (j = 1; j <= days_in_month; j++) {
printf("%2d ", j);
if (++weekday > 6) {
weekday = 0;
printf("\n");
}
}
if (weekday != 0) {
printf("\n");
}
printf("\n");
}
return 0;
}
```
注意,该程序计算的是公历的年历,不考虑闰秒等特殊情况。
阅读全文