用C语言编写程序,显示本月的月历
时间: 2024-09-27 15:18:12 浏览: 43
用C语言编写的Linux应用程序
在C语言中,我们可以使用标准库`<stdio.h>`和`<time.h>`来创建一个简单的月历显示程序。这里我们将使用`strftime()`函数来格式化日期。以下是创建一个基本月历的示例,假设当前月份和年份作为输入或者使用当前系统时间:
```c
#include <stdio.h>
#include <time.h>
void print_month(int year, int month) {
struct tm time_info = {0};
// 设置时间为月初
time_info.tm_year = year - 1900; // 减一,因为tm_year是从1900开始计算的
time_info.tm_mon = month - 1; // 月份从0开始计数
time_info.tm_mday = 1; // 初始日为1
char formatted_date[80];
// 格式化日期到字符串
strftime(formatted_date, sizeof(formatted_date), "%a %b %d, %Y", &time_info);
printf("Month Calendar for %s:\n", formatted_date);
// 打印星期几
printf("%-7s", "Mon"); // 表头,占据7列
printf("%-7s", "Tue");
printf("%-7s", "Wed");
printf("%-7s", "Thu");
printf("%-7s", "Fri");
printf("%-7s", "Sat");
printf("%-7s\n", "Sun");
// 计算总天数
int days_in_month = (month == 2 && (year % 4 == 0 || (year % 100 != 0 && year % 400 == 0))) ? 29 : (month == 4 || month == 6 || month == 9 || month == 11) ? 30 : 31;
for (int i = 1; i <= days_in_month; ++i) {
printf("%2d ", i); // 占据两列,空格填充
if ((i + 6) % 7 == 0) {
printf("\n"); // 每行打印7天
}
}
}
int main() {
int current_year = 202X; // 这里填当前年份
int current_month = _______________; // 这里填当前月份,如果是当前系统时间则需要额外获取
print_month(current_year, current_month);
return 0;
}
阅读全文