用c语言实现年历显示的代码
时间: 2024-02-27 08:52:39 浏览: 41
以下是一个使用 C 语言实现年历显示的代码,可以在控制台中输出指定年份的年历,具体实现方法是通过计算每个月份的天数和每个月份第一天是星期几来输出相应的年历。
```c
#include <stdio.h>
/* 判断某年是否为闰年 */
int isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
/* 计算某个月份的天数 */
int getMonthDays(int year, int month) {
static int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month == 1 && isLeapYear(year)) {
return 29;
} else {
return days[month];
}
}
/* 计算某个日期是星期几 */
int getWeekday(int year, int month, int day) {
if (month == 1 || month == 2) {
month += 12;
year--;
}
return (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
}
/* 输出某个月份的年历 */
void printMonthCalendar(int year, int month) {
printf("%d年%d月\n", year, month + 1);
printf("日 一 二 三 四 五 六\n");
int weekday = getWeekday(year, month, 1); // 获取本月第一天是星期几
for (int i = 0; i < weekday; i++) {
printf(" ");
}
for (int i = 1; i <= getMonthDays(year, month); i++) {
printf("%2d ", i);
if ((i + weekday) % 7 == 0) {
printf("\n");
}
}
if ((getMonthDays(year, month) + weekday) % 7 != 0) {
printf("\n");
}
}
/* 输出指定年份的年历 */
void printYearCalendar(int year) {
for (int i = 0; i < 12; i += 3) {
for (int j = i; j < i + 3; j++) {
printMonthCalendar(year, j);
printf("\n");
}
}
}
int main() {
int year;
printf("请输入年份:");
scanf("%d", &year);
printYearCalendar(year);
return 0;
}
```
以上代码可以在控制台中输出指定年份的年历,您可以根据需要对输出的样式进行调整。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)