2016 年全新原创 C 语言实现农历万年历 paradise300
C 语言实现农历万年历
一、前言
我曾经在网上搜索过 C/C++实现的农历万年历,那时,我刚想着要写一款自
己的桌面小工具,希望它包含公、农历转换,节气查询等功能,找到的无非有两
个版本,其中一个写于 2000 年,数据经过压缩,有节气信息,另一个,则是只
有农历,没有节气。而且看到他们使用的数据,都是通过自己的努力,从日历中
收集并整理出来,从 1901 年到 2050 年这 150 年,很是费工夫。
近段时间,当我在整理资料,发现当时的代码时,就又拿起了这两份代码,
总觉得写得不够好,一是它的数据压缩率明显不够大,二是代码效率不够高,于
是决心用自己的方法实现一款全新的农历万年历(源代码见 最后一部分 )。
二、实现方式
1 / 48
2016 年全新原创 C 语言实现农历万年历 paradise300
要实现一个完整的万年历需要具备以下几点内容:
1. 星期
2. 公历每个月总天数
3. 农历正月初一对应的公历日期
4. 农历每个月的总天数
5. 农历闰月
6. 二十四节气
7. 数九、梅雨、三伏
8. 干支
为了表达公历与农历的对应关系,本文引入了“年内序数”这一概念,它指
的是距离公历 1 月 1 日的天数,即 1 月 1