万年历的c语言节假日程序代码,C语言万年历的源程序
时间: 2023-09-27 18:08:20 浏览: 300
下面是一个简单的C语言万年历程序,可以显示指定年月份的日历,并且标注出节假日:
```
#include <stdio.h>
// 判断是否为闰年
int isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
// 获取指定年份月份的天数
int getDaysOfMonth(int year, int month) {
if (month == 2) {
return isLeapYear(year) ? 29 : 28;
}
else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
}
else {
return 31;
}
}
// 获取指定日期是周几(0代表星期日,1代表星期一,以此类推)
int getDayOfWeek(int year, int month, int day) {
if (month == 1 || month == 2) {
month += 12;
year--;
}
int c = year / 100;
year = year % 100;
int week = year + year/4 + c/4 - 2*c + (13 * (month + 1) / 5) + day - 1;
while (week < 0) {
week += 7;
}
return week % 7;
}
// 打印指定年份月份的日历
void printCalendar(int year, int month) {
printf(" %d年%d月\n", year, month);
printf("日 一 二 三 四 五 六\n");
int daysOfMonth = getDaysOfMonth(year, month);
int dayOfWeek = getDayOfWeek(year, month, 1);
int i, j;
for (i = 0; i < dayOfWeek; i++) {
printf(" ");
}
for (j = 1; j <= daysOfMonth; j++) {
if ((j + dayOfWeek - 1) % 7 == 0) {
printf("\n");
}
printf("%2d ", j);
}
printf("\n");
}
int main() {
int year, month;
printf("请输入年份和月份,用空格隔开:");
scanf("%d %d", &year, &month);
printCalendar(year, month);
return 0;
}
```
在程序中,我们使用了 isLeapYear 函数来判断某一年是否为闰年;使用 getDaysOfMonth 函数来获取指定年份月份的天数;使用 getDayOfWeek 函数来获取指定日期是周几。最后,我们在主函数中调用 printCalendar 函数来打印指定年份月份的日历。
阅读全文