1.万年历 【题目】使用函数方法编写程序。要求当用户输入年份时能输出该年的日历,在日历上 能够看出某天是星期几,可以显示任意一年任意一天,并能够知道是否是闰年等。C语言
时间: 2024-03-12 08:44:19 浏览: 34
下面是一个简单的C语言程序,可以根据用户输入的年份输出该年的日历,包括星期几和是否是闰年:
```c
#include <stdio.h>
int is_leap_year(int year) { // 判断是否是闰年
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
return 1;
} else {
return 0;
}
}
int get_weekday(int year, int month, int day) { // 获取某一天是星期几
int weekday;
if (month == 1 || month == 2) {
month += 12;
year--;
}
weekday = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
return weekday;
}
void print_calendar(int year) { // 输出某一年的日历
int month, day, weekday, days;
printf(" %d年日历\n", year);
printf("=====================\n");
for (month = 1; month <= 12; month++) {
printf(" %d月\n", month);
printf("日 一 二 三 四 五 六\n");
weekday = get_weekday(year, month, 1);
for (int i = 0; i < weekday; i++) {
printf(" ");
}
if (month == 2) {
if (is_leap_year(year)) {
days = 29;
} else {
days = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else {
days = 31;
}
for (day = 1; day <= days; day++) {
printf("%2d ", day);
if ((weekday + day) % 7 == 0) {
printf("\n");
}
}
printf("\n");
}
}
int main() {
int year;
printf("请输入年份:");
scanf("%d", &year);
print_calendar(year);
return 0;
}
```
这个程序中,`is_leap_year`函数用于判断某一年是否是闰年,`get_weekday`函数用于获取某一天是星期几,`print_calendar`函数用于输出某一年的日历。在`main`函数中,先让用户输入年份,然后调用`print_calendar`函数输出日历。程序输出的日历格式较为简单,可以根据需要自行修改。