From 97e023a6c6b7b231b0c56142ba0265aa4fc7cb70 Mon Sep 17 00:00:00 2001 From: AxiBright Date: Mon, 19 Jan 2026 15:17:28 +0800 Subject: [PATCH] update all --- .gitignore | 2 +- Article/Technology/test.md | 1 + Article/Template/Diary.md | 20 +++ Article/YueQian/Code/Mycode/TianShuJiSuan.c | 148 ++++++++++++++++++++ Article/YueQian/Homework/1.19-已完成.md | 0 5 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 Article/Technology/test.md create mode 100644 Article/Template/Diary.md create mode 100644 Article/YueQian/Code/Mycode/TianShuJiSuan.c create mode 100644 Article/YueQian/Homework/1.19-已完成.md diff --git a/.gitignore b/.gitignore index 5dd5ba4..e594dc1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -日记 +Diary .obsidian \ No newline at end of file diff --git a/Article/Technology/test.md b/Article/Technology/test.md new file mode 100644 index 0000000..19fcd92 --- /dev/null +++ b/Article/Technology/test.md @@ -0,0 +1 @@ +[所有 - 滴答清单](https://dida365.com/webapp/#q/all/tasks) \ No newline at end of file diff --git a/Article/Template/Diary.md b/Article/Template/Diary.md new file mode 100644 index 0000000..43ae583 --- /dev/null +++ b/Article/Template/Diary.md @@ -0,0 +1,20 @@ + +# preface +--- +**今天是{{date:YYYY}}年的第{{date:DDD}}天、第{{date:wo}}周!** +**天气:** +**地点:** +# summary +--- +**完成了什么?遇到了什么问题?解决方案是什么?** + + + +# 随想 +--- +**任何想法、感悟、反思、碎片记录...** + + + +# afterword +--- \ No newline at end of file diff --git a/Article/YueQian/Code/Mycode/TianShuJiSuan.c b/Article/YueQian/Code/Mycode/TianShuJiSuan.c new file mode 100644 index 0000000..89bbfd5 --- /dev/null +++ b/Article/YueQian/Code/Mycode/TianShuJiSuan.c @@ -0,0 +1,148 @@ +#include + +// 基准日期:2004年5月2日(星期日) +#define BASE_YEAR 2004 +#define BASE_MONTH 5 +#define BASE_DAY 2 + +// 闰年判断:是闰年返回1,否则返回0 +int is_leap_year(int year) +{ + return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); +} + +// 获取指定年份和月份的天数 +int get_month_days(int year, int month) +{ + int month_days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; + if (month == 2 && is_leap_year(year)) + { + return 29; + } + return month_days[month]; +} + +// 计算从"年1月1日"到"年-月-日"的总天数 +int days_from_year_start(int year, int month, int day) +{ + int total = 0; + for (int m = 1; m < month; m++) + { + total += get_month_days(year, m); + } + total += day; + return total; +} + +// 计算两个日期之间的天数差(date2 - date1,date2需晚于date1) +int calculate_days_diff(int year1, int month1, int day1, + int year2, int month2, int day2) +{ + int diff = 0; + + // 同年直接相减 + if (year1 == year2) + { + int days_to_date1 = days_from_year_start(year1, month1, day1); + int days_to_date2 = days_from_year_start(year2, month2, day2); + return days_to_date2 - days_to_date1; + } + + // 不同年:分段计算 + int total_days_year1 = is_leap_year(year1) ? 366 : 365; + int days_to_date1 = days_from_year_start(year1, month1, day1); + int days_left_in_year1 = total_days_year1 - days_to_date1; + + for (int y = year1 + 1; y < year2; y++) + { + diff += is_leap_year(y) ? 366 : 365; + } + + int days_to_date2 = days_from_year_start(year2, month2, day2); + diff += days_left_in_year1 + days_to_date2; + + return diff; +} + +int zeller_calc_weekday(int year, int month, int day) +{ + int y, c, m, d; + if (month < 3) + { + m = month + 12; + y = year - 1; + } + else + { + m = month; + y = year; + } + c = y / 100; + y = y % 100; + d = day; + + int w = (y + y/4 + c/4 - 2*c + (26*(m+1))/10 + d - 1) % 7; + if (w < 0) + w += 7; + + w = w % 7; + return w; +} + +int main(void) +{ + int target_year, target_month, target_day; + // 星期映射表:索引0=星期日,1=星期一...6=星期六 + char *weekdays[] = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; + + while(1) + { + printf("依次输入 年 月 日(需晚于%d年%d月%d日):", BASE_YEAR, BASE_MONTH, BASE_DAY); + scanf("%d%d%d", &target_year, &target_month, &target_day); + + // 输入合法性校验 + if (target_year < BASE_YEAR) + { + printf("年份应在%d年及之后!\n", BASE_YEAR); + continue; + } + if (target_month < 1 || target_month > 12) + { + printf("月份输入错误,请输入1-12之间的数字!\n"); + continue; + } + int days_of_month = get_month_days(target_year, target_month); + if (target_day < 1 || target_day > days_of_month) + { + printf("%d年%d月没有%d日!\n", target_year, target_month, target_day); + continue; + } + if (target_year == BASE_YEAR) + { + if (target_month < BASE_MONTH || + (target_month == BASE_MONTH && target_day < BASE_DAY)) + { + printf("日期需晚于%d年%d月%d日!\n", BASE_YEAR, BASE_MONTH, BASE_DAY); + continue; + } + } + + // 计算天数差 + int total_days = calculate_days_diff(BASE_YEAR, BASE_MONTH, BASE_DAY, + target_year, target_month, target_day); + + // 用蔡勒公式计算星期几 + int weekday = zeller_calc_weekday(target_year, target_month, target_day); + + // 输出结果 + printf("%d年%d月%d日,距%d年%d月%d日共%d天\n", + target_year, target_month, target_day, + BASE_YEAR, BASE_MONTH, BASE_DAY, total_days); + // 显示星期几 + printf("%d年%d月%d日 是 %s\n", target_year, target_month, target_day, weekdays[weekday]); + + printf("------------------------------------------------------\n"); + } + + return 0; +} \ No newline at end of file diff --git a/Article/YueQian/Homework/1.19-已完成.md b/Article/YueQian/Homework/1.19-已完成.md new file mode 100644 index 0000000..e69de29