用c语言写一个万年历程序,代码长一点
时间: 2023-12-06 08:02:01 浏览: 138
好的,以下是一个用 C 语言编写的万年历程序,代码较长,但尽力保证清晰易懂。
```c
#include <stdio.h>
// 判断是否为闰年
int isLeapYear(int year) {
return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
}
// 计算某一年某一月的天数
int getDaysOfMonth(int year, int month) {
int days = 31;
if (month == 2) {
days = isLeapYear(year) ? 29 : 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
}
return days;
}
// 计算某一年某一月一号是星期几(0-6,0表示星期天)
int getWeekday(int year, int month) {
int century = year / 100; // 世纪数
int yearInCentury = year % 100; // 世纪内的年份
int weekday = (yearInCentury + yearInCentury / 4 + century / 4 - 2 * century + 26 * (month + 1) / 10 + 1) % 7;
if (weekday < 0) {
weekday += 7;
}
return weekday;
}
// 打印日历
void printCalendar(int year, int month) {
int days = getDaysOfMonth(year, month); // 本月天数
int weekday = getWeekday(year, month); // 本月一号星期几
printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");
for (int i = 0; i < weekday; i++) {
printf("\t");
}
for (int i = 1; i <= days; i++) {
printf("%d\t", i);
if ((i + weekday) % 7 == 0) {
printf("\n");
}
}
printf("\n");
}
int main() {
int year, month;
printf("请输入年份:");
scanf("%d", &year);
printf("请输入月份:");
scanf("%d", &month);
printCalendar(year, month);
return 0;
}
```
这个程序可以接受用户输入的年份和月份,然后输出该月的日历。其中使用了一些基本的数学公式计算,例如判断闰年、计算某年某月的天数、计算某年某月一号是星期几等等。
阅读全文