用C打印输出一年的日历
时间: 2024-09-16 17:02:59 浏览: 88
在C语言中,打印出一年的日历通常需要使用一些循环和条件判断来处理月份的天数变化。以下是一个简单的示例,展示如何打印出2023年的日历:
```c
#include <stdio.h>
#include <stdlib.h>
// 函数来获取给定月份的天数
int days_in_month(int month, int year) {
switch (month) {
case 2:
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) return 29; // 考虑闰年
else return 28;
case 1, 3, 5, 7, 8, 10, 12: return 31; // 非闰年都是31天
default: return 30; // 4, 6, 9, 11月非闰年是30天
}
}
void print_calendar(int year) {
for (int i = 1; i <= 12; i++) {
printf("%d年\n", year);
printf(" ");
for (int j = 1; j <= 7; j++) {
printf("%2d ", j); // 两位数显示
}
printf("\n");
int day_of_week = (year + (i - 1) / 12) * 26 + (i + 2) / 10 + (i % 10 > 4 ? 1 : 0); // 根据蔡勒公式计算星期几
int start_day = (day_of_week - 1 + 7) % 7; // 转换到一周中的第一天
for (int k = 1; k < start_day; k++) {
printf(" "); // 填充空白
}
printf("%d", year % 100); // 显示年份的最后两位
for (int l = 1; l <= days_in_month(i, year); l++) {
if (l == start_day + 1) {
printf("*"); // 初始日期标记
} else {
printf("%2d ", l);
}
}
printf("\n");
}
}
int main() {
int year = 2023;
print_calendar(year);
return 0;
}
```
这个程序首先定义了一个函数`days_in_month`来获取指定月份的天数,然后通过`print_calendar`函数按行打印日历。注意,这是一个简化版本,没有考虑到更复杂的格式美化和闰年规则。
阅读全文