用C语言实现:输入年月即可生成日历的神奇程序
当然可以!下面是一个简单的C语言程序,用于生成指定年份和月份的日历。这个程序使用了一些基本的日期计算方法来确定每个月的第一天是星期几,并据此打印出日历。 ```c #include <stdio.h> // 函数声明 int isLeapYear(int year); int getDayOfWeek(int year, int month, int day); void printCalendar(int year, int month); int main() { int year, month; printf("请输入年份: "); scanf("%d", &year); printf("请输入月份: "); scanf("%d", &month); printCalendar(year, month); return 0; } // 判断是否为闰年 int isLeapYear(int year) { if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { return 1; } else { return 0; } } // 计算给定日期是星期几(Zeller公式) int getDayOfWeek(int year, int month, int day) { if (month == 1 || month == 2) { month += 12; year -= 1; } int q = day; int m = month; int k = year % 100; int j = year / 100; int h = (q + 13 * (m + 1) / 5 + k + k / 4 + j / 4 + 5 * j) % 7; return (h + 5) % 7; // 0: 星期日, 1: 星期一, ..., 6: 星期六 } // 打印指定年份和月份的日历 void printCalendar(int year, int month) { const char *monthNames[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; const int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int days = daysInMonth[month - 1]; if (isLeapYear(year) && month == 2) { days = 29; } int startDay = getDayOfWeek(year, month, 1); printf("\n%s %d\n", monthNames[month - 1], year); printf("Sun Mon Tue Wed Thu Fri Sat\n"); int i, j; for (i = 0; i < startDay; i++) { printf(" "); } for (j = 1; j <= days; j++) { printf("%3d ", j); if ((startDay + j) % 7 == 0) { printf("\n"); } } printf("\n"); } ``` 说明 1. isLeapYear:判断给定年份是否为闰年。 2. getDayOfWeek:使用Zeller公式计算给定日期是星期几。 3. printCalendar:打印指定年份和月份的日历。 使用方法 1. 编译并运行程序。 2. 输入年份和月份。 3. 程序将输出该年份和月份的日历。 希望这个程序对你有帮助!如果有任何问题或需要进一步的功能,请告诉我。 ######[AI写代码神器 | 783点数解答 | 2024-11-14 19:44:42]
- 代码填空挑战:完成正态分布、随机数生成及数据处理代码(阿里通义 | 506点数解答 | 2025-03-23 14:32:14)349
- 挑战!完成代码填空解锁数据处理奥秘(字节豆包 | 116点数解答 | 2025-03-26 22:22:15)361
- 挑战填空!完成这段 NumPy 代码实现数据生成与保存(DeepSeek | 178点数解答 | 2025-03-26 22:26:30)425
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)384
- 5条新春贺语,开启龙年吉祥团圆新篇章!(字节豆包 | 135点数解答 | 2025-01-15 14:43:34)333
- 班级分组难题:最少修改多少同学 id 实现公平配对?(DeepSeek | 1604点数解答 | 2026-01-11 13:28:28)72
- 整数 N! 分解质因数:C++ 代码实现及示例解析(DeepSeek | 213点数解答 | 2026-01-11 17:51:06)39
- 整数 N! 分解质因数:算法详解与 C++ 代码实现(DeepSeek | 504点数解答 | 2026-01-12 17:42:36)48
- 巧用算法!求解班级分组中最少更改学生ID数的难题(DeepSeek | 2266点数解答 | 2026-01-13 17:47:37)53
- 班级活动分组难题:最少修改多少学生 ID 实现公平分组?(DeepSeek | 1692点数解答 | 2026-01-13 17:49:24)48
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)354
- C语言实现:计算小球第10次落地总路程与反弹高度(DeepSeek | 234点数解答 | 2025-02-20 19:38:01)215