C语言如何两列输出日历
时间: 2024-12-15 19:16:44 浏览: 2
在C语言中,你可以使用`strftime()`函数配合`stdio.h`库来创建并输出一个包含日期的日历。这里是一个简单的例子,展示了如何在一个矩形结构中按行输出两个月份的天数:
```c
#include <stdio.h>
#include <time.h>
// 定义一个结构体表示一天
typedef struct {
int day;
char date[10]; // 用于存储日期字符串
} CalendarDay;
// 打印单个日历天
void print_day(CalendarDay day) {
printf("%d ", day.day);
strftime(day.date, sizeof(day.date), "%d", localtime(&day.day));
printf("%s\n", day.date);
}
int main() {
time_t now = time(0);
tm *ltm = localtime(&now);
// 获取当前月份及其前一个月的月份
int current_month = ltm->mon + 1;
if (current_month == 13) { // 如果是12月,向前推一年
current_month = 1;
ltm->year--;
}
int prev_month = ltm->mon;
// 输出当前月份
printf("Month %d:\n", current_month);
for (int i = 1; i <= 7; ++i) {
CalendarDay day = {i, "0" };
print_day(day);
}
// 输出前一个月
printf("\nMonth %d:\n", prev_month);
for (int i = 1; i <= 7; ++i) {
CalendarDay day = {i, "0" };
day.day += (prev_month != 1 ? 30 : (ltm->mon > 1 ? ltm->mday : 31)); // 调整日期到上个月
print_day(day);
}
return 0;
}
```
这个程序首先获取当前时间,然后计算出前一个月的月份。接着,它分别打印出这两个月的前7天(通常日历的一周)。注意,这个示例假设每个月份有30天,如果是闰年则需要调整。
阅读全文