c语言输入年月日打印月历
时间: 2024-11-03 19:21:56 浏览: 5
在C语言中,打印一个简单的月份日历通常会涉及到一些日期处理的库函数,例如`<stdio.h>`中的`getchar()`和`putchar()`,以及`<time.h>`中的`strftime()`函数。下面是一个基本的例子,用于打印当前月份的日历:
```c
#include <stdio.h>
#include <time.h>
void printCalendar(int year, int month) {
struct tm timeinfo;
char buffer[80];
// 设置时间结构体
timeinfo.tm_year = year - 1900; // 转换为自1900年以来的年份
timeinfo.tm_mon = month - 1; // 减1因为月份从0开始计数
timeinfo.tm_mday = 1; // 初始化为第一个日期
// 格式化输出
strftime(buffer, sizeof(buffer), "%a %d %b %Y", &timeinfo); // 星期、日、月份和年份
printf("%s\n", buffer);
// 循环打印每一天,直到月底
for (int day = 2; day <= getMonthDays(year, month); ++day) {
timeinfo.tm_mday = day;
strftime(buffer, sizeof(buffer), "%a %d %b %Y", &timeinfo);
printf("%s\n", buffer);
}
}
// 获取给定月份的天数
int getMonthDays(int year, int month) {
return (month == 2 && isLeapYear(year)) ? 29 : (month == 4 || month == 6 || month == 9 || month == 11) ? 30 : 31;
}
// 判断是否为闰年
int isLeapYear(int year) {
if (year % 4 != 0)
return 0;
else if (year % 100 != 0)
return 1;
else if (year % 400 != 0)
return 0;
else
return 1;
}
int main() {
int year, month;
printf("请输入年份和月份(格式:YYYY MM): ");
scanf("%d %d", &year, &month);
if (month >= 1 && month <= 12) {
printCalendar(year, month);
} else {
printf("无效的月份!\n");
}
return 0;
}
```
在这个示例中,用户需要输入年份和月份,程序会检查输入的有效性并打印相应的日历。注意这只是一个基础版本,实际应用中可能还需要处理更多的边缘情况和错误。
阅读全文