#include <stdio.h>int main(){ int year, month, day, daysInMonth, weekDay = 0; printf("请输入年份: "); scanf("%d", &year); printf("请输入月份: "); scanf("%d", &month); // 计算这个月有多少天 if (month == 2) { if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) daysInMonth = 29; else daysInMonth = 28; } else if (month == 4 || month == 6 || month == 9 || month == 11) daysInMonth = 30; else daysInMonth = 31; // 计算这个月第一天是星期几 weekDay = 1 + ((year - 1) * 365 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400); for (int i = 1; i < month; i++) { if (i == 2) { if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) weekDay += 29; else weekDay += 28; } else if (i == 4 || i == 6 || i == 9 || i == 11) weekDay += 30; else weekDay += 31; } weekDay = weekDay % 7; // 输出日历头部 printf("\n日 一 二 三 四 五 六\n"); // 输出日历主体 for (int i = 0; i < weekDay; i++) printf(" "); for (int i = 1; i <= daysInMonth; i++) { printf("%2d ", i); if ((i + weekDay) % 7 == 0) printf("\n"); } return 0;}
时间: 2024-04-28 14:26:09 浏览: 62
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
这段代码是一个 C 语言程序,它实现了一个简单的万年历。程序首先会要求用户输入年份和月份,然后根据输入的年份和月份计算出这个月有多少天,以及这个月的第一天是星期几。最后,程序会输出一个日历表格,表格中包含了这个月的所有日期,以及对应的星期几。
具体来说,这个程序的实现包含了以下几个步骤:
1. 首先,程序会使用 scanf() 函数从标准输入流中读取用户输入的年份和月份,存储到对应的变量中。
2. 然后,程序会根据输入的年份和月份计算出这个月有多少天。具体来说,如果这个月是 2 月,程序会判断这一年是否是闰年,如果是闰年则这个月有 29 天,否则这个月有 28 天;如果这个月是 4、6、9 或 11 月,则这个月有 30 天;否则这个月有 31 天。
3. 接下来,程序会计算这个月的第一天是星期几。具体来说,程序会先计算出这一年的第一天是星期几,然后根据这个月之前的所有天数,计算出这个月的第一天是星期几。
4. 最后,程序会输出一个日历表格。表格的第一行是星期几的标识,接下来的每一行都包含了一个星期的日期,如果这一行的日期已经到达了这个月的最后一天,则换行输出下一个星期的日期。
需要注意的是,这个程序没有对用户输入的年份和月份进行错误检查。如果用户输入了无效的年份或月份,程序可能会产生意料之外的结果。
阅读全文