用C语言怎样打印出某年某月的日历
时间: 2024-12-16 22:17:23 浏览: 15
在C语言中,你可以使用`<stdio.h>`库的`printf()`函数结合一些循环结构来打印出指定年份和月份的日历。这里有一个基本的示例,用于打印出公历的月份日历:
```c
#include <stdio.h>
#include <time.h>
void printCalendar(int year, int month) {
const struct tm time_info = {0};
time_info.tm_year = year - 1900; // 将年份转换为从1900年开始的计数
time_info.tm_mon = month - 1; // 月份从0开始,所以减1
time_info.tm_mday = 1; // 初始日期设为1
// 获取当前月份的第一天是星期几
time_t cal_time = mktime(&time_info);
time_info.tm_wday = weekday(cal_time);
printf("-------- %d %s --------\n", year, calendar_names[month]);
// 打印月份头部
for (int i = 0; i < time_info.tm_wday; i++) {
printf("%4d ", 0); // 星期空格填充
}
for (int day = 1; day <= 7; day++) {
if (day > time_info.tm_mday) break;
printf("%4d ", day);
}
printf("\n");
// 打印其余的天数
for (int day = 8; day <= 31; day++) {
time_info.tm_mday = day;
// 检查是否是闰年
bool is_leap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
if (is_leap && month == 2 && day > 29) continue;
// 打印日期
time_info.tm_mday = day;
printf("%4d ", day);
// 如果已经过完这个月,换行
if (day == 1 + time_info.tm_mday) {
printf("\n");
}
}
}
// 定义月份名称数组
const char* calendar_names[] = {"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"};
int main() {
int year = 2023; // 设置你要打印的年份
int month = 1; // 设置你要打印的月份
printCalendar(year, month);
return 0;
}
```
当你运行这个程序并更改`year`和`month`变量时,它会打印出指定年月的日历。
阅读全文