用带边框形式输出自己出生那个月的月历,并在其下一行输出“某某某出生在某年某月某日”C语言
时间: 2024-09-14 21:14:05 浏览: 85
IREPORT中多行某列数据的合并
在C语言中,可以使用头文件`<stdio.h>`中的`printf()`函数以及控制字符来创建一个带边框的月历。为了简化,我们将假设你出生于1990年1月15日。下面是一个基本示例,展示了如何打印出指定月份的月历,并包含出生日期的信息:
```c
#include <stdio.h>
#include <time.h>
#define WIDTH 7 // 宽度和高度
#define DAY_WIDTH 2
void print_month(int year, int month) {
const struct tm date = {0};
time_t t = mktime(&date);
setdate(t + (month - 1) * 30); // 设置日期到指定月份第一天
printf("月份: %d-%02d\n", year, month);
// 上边缘和左边缘
for (int i = 0; i < WIDTH; ++i) {
if (i == 0 || i == WIDTH - 1)
printf("-"); // 边框线
else
printf(" ");
}
printf("\n");
// 输出月历
for (int i = 0; i < WIDTH; ++i) {
int day_num = i + 1;
if (day_num > get_day_of_week()) // 跳过前面的空格
continue;
printf("%2d", day_num);
if (day_num == get_current_day() && month == get_month()) { // 如果是生日那天
printf("*"); // 高亮显示
} else {
printf(" ");
}
if ((i + 1) % DAY_WIDTH == 0) {
printf("\n");
}
}
// 下边缘
printf("\n");
for (int i = 0; i < WIDTH; ++i) {
if (i == 0 || i == WIDTH - 1)
printf("-"); // 边框线
else
printf(" ");
}
printf("\n");
printf("\n%s 出生在 %d-%02d-%02d\n", "名字", year, month, get_day()); // 以字符串形式输出出生信息
}
// 获取当前日期相关的辅助函数
int get_day_of_week() {
return localtime(&time(0))->tm_wday + 1; // 星期一为1
}
int get_current_day() {
return localtime(&time(0))->tm_mday;
}
int get_month() {
return localtime(&time(0))->tm_mon + 1; // 月份从1开始计数
}
int main() {
int year = 1990, month = 1; // 你的出生月份
print_month(year, month);
return 0;
}
```
请注意,这只是一个基础示例,实际应用可能需要更复杂的时间处理和用户输入功能。运行这个程序时,你需要手动设置 `year` 和 `month` 的值。
阅读全文