教学日历表是学校组织每学期课程教学的具体计划表,运用日历表并输出。
要求:
①根据输入的学期、开学日期、总周数自动计算并生成某个学期的教学日历②输出格式按如下样例输出,输出的日历表中第行固定 显示星期几,第列固定显示第几周,中间的日期根据计算结果自动填充。
③输出的日历表中周六、周日及节假日(五节、 国庆节等)用不同的字体突出标识:每月的第一天直接输出月份名称(如: 6月)不用输出某月1日字样。
我也想要,在线等急
要
我也要
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义颜色控制码
#define COLOR_RED "\033[31m"
#define COLOR_GREEN "\033[32m"
#define COLOR_YELLOW "\033[33m"
#define COLOR_BLUE "\033[34m"
#define COLOR_MAGENTA "\033[35m"
#define COLOR_CYAN "\033[36m"
#define COLOR_RESET "\033[0m"
// 定义每个月的天数
const int month_days[] = {0, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30};
int main() {
int term, start_weekday, total_weeks;
int year, month, day, weekday, week;
int i, j, k;
// 输入学期、开学日期、总周数
printf("请输入学期(1/2): ");
scanf("%d", &term);
printf("请输入开学日期(格式为年 月 日,如2019 9 2): ");
scanf("%d%d%d", &year, &month, &day);
printf("请输入总周数: ");
scanf("%d", &total_weeks);
// 计算开学日期是星期几
weekday = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
// 输出日历表头
printf("教学日历表 第%d学期\n", term);
printf("星期一\t星期二\t星期三\t星期四\t星期五\t" COLOR_BLUE "周六\t周日" COLOR_RESET "\n");
// 循环输出每周的日期
for (week = 1; week <= total_weeks; week++) {
printf("%d周\t", week);
// 输出每周的日期
for (weekday = 1; weekday <= 7; weekday++) {
// 计算日期
day = (week - 1) * 7 + weekday - start_weekday + 1;
if (day <= 0 || day > month_days[month]) {
printf("\t");
} else {
// 判断是否为节假日或周末
if (weekday == 6 || weekday == 7 || (month == 10 && day >= 1 && day <= 7) || (month == 5 && day >= 1 && day <= 3)) {
printf(COLOR_RED);
} else if (weekday == 5) {
printf(COLOR_GREEN);
} else {
printf(COLOR_RESET);
}
printf("%d", day);
printf(COLOR_RESET "\t");
}
}
printf("\n");
}
return 0;
}