C语言编写程序,编写万年历程序,输入年、月,输出该月的日历表。输入年,输出该年的日历表,运行时输入2020 2
时间: 2024-03-13 12:46:49 浏览: 58
好的,我可以帮你编写一个简单的C语言程序来实现这个功能。以下是程序的代码:
```c
#include <stdio.h>
// 判断某年是否为闰年
int isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 获取某个月份的天数
int getMonthDays(int year, int month) {
int days[12] = {31, 28 + isLeapYear(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
return days[month - 1];
}
// 输出日历表
void printCalendar(int year, int month) {
int days = getMonthDays(year, month); // 获取该月份的天数
int firstDay = (year + year / 4 - year / 100 + year / 400 + (13 * month + 8) / 5 + 1) % 7; // 获取该月份的第一天是星期几
printf("%d年%d月的日历表如下:\n", year, month);
printf("日\t一\t二\t三\t四\t五\t六\n");
for (int i = 0; i < firstDay; i++) {
printf("\t");
}
for (int i = 1; i <= days; i++) {
printf("%d\t", i);
if ((firstDay + i) % 7 == 0) {
printf("\n");
}
}
if ((firstDay + days) % 7 != 0) {
printf("\n");
}
}
int main() {
int year, month;
printf("请输入年份和月份(以空格分隔):");
scanf("%d %d", &year, &month);
if (month >= 1 && month <= 12) {
printCalendar(year, month);
} else if (month == 0) {
for (int i = 1; i <= 12; i++) {
printCalendar(year, i);
printf("\n");
}
} else {
printf("输入的月份有误,请重新输入!\n");
}
return 0;
}
```
你可以将代码保存为 `calendar.c` 文件,然后使用以下命令编译和运行程序:
```
gcc calendar.c -o calendar
./calendar
```
在运行程序时,输入 `2020 2`,即可输出2020年2月的日历表。如果你想输出2020年的整个日历表,可以输入 `2020 0`。
阅读全文