请帮我完成一道编程题目:打印年历,已知2000年1月1日为星期六,输入其后任一年的年份,打印该年的年历。要求使用c语言
时间: 2023-10-13 17:04:14 浏览: 96
以下是一个简单的实现,使用 C 语言编写,需要输入任何一个年份,程序将打印该年的日历:
```c
#include <stdio.h>
// 每个月的天数
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 判断是否是闰年
int is_leap_year(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1;
}
return 0;
}
// 获取某年某月的天数
int get_days(int year, int month) {
if (month == 1 && is_leap_year(year)) {
return 29;
}
return days[month];
}
// 打印日历
void print_calendar(int year) {
int month = 0;
int week = 6; // 2000年1月1日为星期六
printf(" %d\n", year);
printf(" January\n");
printf(" Su Mo Tu We Th Fr Sa\n");
// 打印1月份的日历
for (int i = 0; i < week; i++) {
printf(" ");
}
for (int i = 1; i <= get_days(year, month); i++) {
printf("%2d ", i);
week++;
if (week == 7) {
printf("\n");
week = 0;
}
}
printf("\n");
// 依次打印2-12月份的日历
for (month = 1; month <= 11; month++) {
printf(" %s\n", month == 1 ? "February" :
month == 2 ? "March" :
month == 3 ? "April" :
month == 4 ? "May" :
month == 5 ? "June" :
month == 6 ? "July" :
month == 7 ? "August" :
month == 8 ? "September" :
month == 9 ? "October" :
month == 10 ? "November" : "December");
printf(" Su Mo Tu We Th Fr Sa\n");
for (int i = 1; i <= get_days(year, month); i++) {
printf("%2d ", i);
week++;
if (week == 7) {
printf("\n");
week = 0;
}
}
printf("\n");
}
}
int main()
{
int year;
printf("请输入一个年份:");
scanf("%d", &year);
print_calendar(year);
return 0;
}
```
程序使用输入的年份打印日历,首先打印一月份,然后依次打印二至十二月份的日历。对于每个月份,我们需要计算这个月有多少天,并且打印出日历表格。
阅读全文