已知2000年1月1日为星期六,输入其后任意一年,打印该年的年历,用c语言完成,代码要有注释
时间: 2023-09-20 19:04:32 浏览: 97
输入一个年份,打印该年份的日历
4星 · 用户满意度95%
以下是一个简单的C语言代码,可以根据给定的年份打印出该年份的日历。注释已经写在代码中,方便理解。
```c
#include <stdio.h>
// 判断给定年份是否为闰年
int isLeapYear(int year) {
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
return 1;
}
return 0;
}
// 计算给定年份的每个月份的天数
void getMonthDays(int year, int month, int *days) {
int common_year[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int leap_year[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (isLeapYear(year)) {
for (int i = 0; i < 12; i++) {
days[i] = leap_year[i];
}
} else {
for (int i = 0; i < 12; i++) {
days[i] = common_year[i];
}
}
}
// 打印给定年份的日历
void printCalendar(int year) {
int monthDays[12]; // 存储每个月份的天数
getMonthDays(year, 0, monthDays); // 获取每个月份的天数
printf("==================== %d年 ====================\n", year);
printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");
int week = 0; // 记录当前日期的星期几
for (int i = 0; i < 12; i++) {
printf("\n==================== %d月 ====================\n", i + 1);
printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");
// 打印每个月份的日历
for (int j = 0; j < week; j++) {
printf("\t");
}
for (int j = 1; j <= monthDays[i]; j++) {
printf("%d\t", j);
week++;
if (week == 7) {
printf("\n");
week = 0;
}
}
}
}
int main() {
int year;
printf("请输入一个年份:");
scanf("%d", &year);
printCalendar(year);
return 0;
}
```
使用时,先输入一个年份,程序会自动打印出该年份的日历。例如,输入2022,打印的结果如下:
```
请输入一个年份:2022
==================== 2022年 ====================
Sun Mon Tue Wed Thu Fri Sat
==================== 1月 ====================
Sun Mon Tue Wed Thu Fri Sat
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
==================== 2月 ====================
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28
==================== 3月 ====================
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
==================== 4月 ====================
Sun Mon Tue Wed Thu Fri Sat
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
==================== 5月 ====================
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
==================== 6月 ====================
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
==================== 7月 ====================
Sun Mon Tue Wed Thu Fri Sat
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
==================== 8月 ====================
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
==================== 9月 ====================
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
==================== 10月 ====================
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
==================== 11月 ====================
Sun Mon Tue Wed Thu Fri Sat
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
==================== 12月 ====================
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
```
阅读全文