C语言万年历程序代码
的有关信息介绍如下:
当然!以下是一个简单的C语言程序,用于生成万年历。这个程序可以显示用户指定年份和月份的日历。
#include <stdio.h> #include <stdbool.h> // 判断是否是闰年 bool isLeapYear(int year) { if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { return true; } else { return false; } } // 获取某个月的天数 int getDaysInMonth(int year, int month) { switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 4: case 6: case 9: case 11: return 30; case 2: return isLeapYear(year) ? 29 : 28; default: return 0; // 不应该发生的情况 } } // 获取某一年某一月的第一天是星期几(0代表星期天,1代表星期一,依此类推) int getFirstDayOfMonth(int year, int month) { static int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 }; int y = year - 1; int c = y / 100; int k = y % 100; return (y + y/4 - y/100 + y/400 + t[month-1] + k/4 - k%100/4 + c/4 - 3*c/4) % 7; } // 打印月份名称 void printMonthName(int month) { const char *months[] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; printf("%s\n", months[month-1]); } // 打印星期标题 void printWeekHeaders() { const char *days[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; for (int i = 0; i < 7; ++i) { printf("%3s ", days[i]); } printf("\n"); } // 打印指定年份和月份的日历 void printCalendar(int year, int month) { printMonthName(month); printf(" %d\n", year); printWeekHeaders(); int firstDay = getFirstDayOfMonth(year, month); int daysInMonth = getDaysInMonth(year, month); // 打印前导空格 for (int i = 0; i < firstDay; ++i) { printf(" "); } // 打印日期 for (int day = 1; day <= daysInMonth; ++day) { printf("%3d ", day); if ((day + firstDay) % 7 == 0) { printf("\n"); } } printf("\n"); } int main() { int year, month; printf("Enter year: "); scanf("%d", &year); printf("Enter month (1-12): "); scanf("%d", &month); if (month < 1 || month > 12) { printf("Invalid month!\n"); } else { printCalendar(year, month); } return 0; }程序说明:
- isLeapYear 函数判断给定的年份是否为闰年。
- getDaysInMonth 函数返回给定年份和月份的天数。
- getFirstDayOfMonth 函数计算并返回给定年份和月份的第一天是星期几。
- printMonthName 函数打印月份的英文名称。
- printWeekHeaders 函数打印星期的标题行(从星期日到星期六)。
- printCalendar 函数打印指定年份和月份的完整日历。
- main 函数获取用户输入的年份和月份,并调用 printCalendar 函数来显示日历。如果输入的月份无效,则提示错误信息。
你可以将这个代码复制到你的C编译器中运行,并根据需要调整或扩展功能。



