能否提供一份用C语言编写的日历生成代码示例?
时间: 2024-12-10 11:38:16 浏览: 7
当然可以,这是一个简单的C程序,它会生成一个月份的日历。这个例子假设我们只处理非闰年的1月到12月:
```c
#include <stdio.h>
#include <time.h>
// 函数声明
void print_calendar(int year, int month);
int main() {
// 获取当前年份和月份,如果需要特定日期,可以传入年份和月份作为参数
time_t current_time = time(NULL);
struct tm *now = localtime(¤t_time);
int current_year = now->tm_year + 1900;
int current_month = now->tm_mon + 1;
printf("Calendar for %d-%02d\n", current_year, current_month);
print_calendar(current_year, current_month);
return 0;
}
// 打印日历函数
void print_calendar(int year, int month) {
const int days_in_month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 确保是正确的月份范围
if (month < 1 || month > 12) {
printf("Invalid month.\n");
return;
}
// 检查是否是闰年,如果是2月,则天数为29
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
days_in_month[1] = 29;
} else {
days_in_month[1] = 28;
}
// 打印日历行
for (int i = 1; i <= days_in_month[month - 1]; ++i) {
if (i < 10)
printf("%2d ", i); // 前面补空格,使得数字对齐
else
printf("%d ", i); // 单独打印较大的数字
if ((i % 7 == 0) || (i == days_in_month[month - 1])) {
printf("\n"); // 行结束
}
}
}
```
运行这个程序会显示当前年份和月份的日历。如果你想查看其他年份或月份,只需更改`main`函数中`print_calendar`的参数即可。
阅读全文