c语言实现万年历具体代码
时间: 2023-11-12 15:33:54 浏览: 9
以下是用 C 语言实现万年历的代码:
```c
#include <stdio.h>
int main() {
int year, month, day, daysInMonth, weekDay = 0;
printf("请输入年份:");
scanf("%d", &year);
printf("请输入月份:");
scanf("%d", &month);
// 每个月的天数
int monthDays[] = {31,28,31,30,31,30,31,31,30,31,30,31};
// 计算闰年
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
monthDays[1] = 29;
}
// 计算该月第一天是星期几
weekDay = 0;
for(int i = 1900; i < year; i++) {
if((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
weekDay += 366 % 7;
} else {
weekDay += 365 % 7;
}
}
for(int i = 0; i < month - 1; i++) {
weekDay += monthDays[i] % 7;
}
weekDay += 1; // 因为1900年1月1日是星期一,所以要加 1
// 打印日历头部
printf("日 一 二 三 四 五 六\n");
// 打印空格
for(int i = 0; i < weekDay % 7; i++) {
printf(" ");
}
daysInMonth = monthDays[month - 1];
for(int i = 1; i <= daysInMonth; i++) {
printf("%2d ", i);
if((weekDay + i) % 7 == 0) {
printf("\n");
}
}
return 0;
}
```
注意,在计算该月第一天是星期几的时候,要先计算出输入的年份距离1900年的天数,再加上之前每个月的天数,最后加1,因为1900年1月1日是星期一。