c语言用结构体表示万年历节假日
时间: 2023-12-18 08:28:38 浏览: 206
以下是使用C语言结构体表示万年历节假日的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义结构体表示节假日
struct Holiday {
int month; // 月份
int day; // 日期
char name[20]; // 节假日名称
};
// 定义结构体表示某一天的信息
struct Day {
int year; // 年份
int month; // 月份
int day; // 日期
int week; // 星期几
struct Holiday holiday; // 节假日信息
};
// 定义结构体表示某一月的信息
struct Month {
int year; // 年份
int month; // 月份
int days; // 该月天数
struct Day days_info[42]; // 该月每一天的信息
};
// 定义结构体表示某一年的信息
struct Year {
int year; // 年份
struct Month months[12]; // 该年每个月的信息
};
// 初始化节假日信息
void init_holiday(struct Holiday *holiday, int month, int day, char *name) {
holiday->month = month;
holiday->day = day;
strcpy(holiday->name, name);
}
// 初始化某一天的信息
void init_day(struct Day *day, int year, int month, int day_num, int week, struct Holiday holiday) {
day->year = year;
day->month = month;
day->day = day_num;
day->week = week;
day->holiday = holiday;
}
// 初始化某一月的信息
void init_month(struct Month *month, int year, int month_num, int days, struct Day *days_info) {
month->year = year;
month->month = month_num;
month->days = days;
memcpy(month->days_info, days_info, sizeof(struct Day) * 42);
}
// 初始化某一年的信息
void init_year(struct Year *year, int year_num, struct Month *months) {
year->year = year_num;
memcpy(year->months, months, sizeof(struct Month) * 12);
}
int main() {
// 初始化节假日信息
struct Holiday new_year_day, spring_festival, tomb_sweeping_day;
init_holiday(&new_year_day, 1, 1, "元旦");
init_holiday(&spring_festival, 1, 1, "春节");
init_holiday(&tomb_sweeping_day, 4, 4, "清明节");
// 初始化某一月的信息
struct Day days_info[42];
init_day(&days_info[0], 2022, 1, 1, 5, new_year_day);
init_day(&days_info[1], 2022, 1, 2, 6, new_year_day);
// ...省略其他日期的初始化
struct Month january;
init_month(&january, 2022, 1, 31, days_info);
// 初始化某一年的信息
struct Month months[12] = {january, /* ...省略其他月份的初始化 */};
struct Year year;
init_year(&year, 2022, months);
// 输出2022年1月1日的节假日名称
printf("%s\n", year.months[0].days_info[0].holiday.name);
return 0;
}
```
阅读全文