此程序非本人所写 程序的功能是输入2000年2月5日(正月初一)至2100年12月31日之间的公历日期,输出对应的农历日期(闰月以月份+128表示); 该程序由IAR编译成MSP430的目标代码,大约占用600个字节的程序空间,如改用汇编,去除多余的头尾,应该可以缩减到500字节以内; 程序特色在于用101个16位字表述了101年的农历大小月及闰月的数据。低12位表示对应12个月的月大或月小,最低位为正月,1表示月大; 高4位为0时表示当年及下一年无闰月;高4位为1~12时表示下一年度的相应月存在闰月;高4位为13或14时,分别表示当前年的闰月为月小或月大。 按照这个结构可以扩充到更多年份,但程序中对非闰年的公历1900,2200,2300,2500年 份未作处理,仅对2100作为特例处理。 为简化程序,在转换函数内对输入日期的合法性未作判别,如输入1810-2-15、2008-6-31等,将导致不可预料的输出结果。 提醒:程序仅进行了抽样测试,未做逐月验证,对于相近农历月大小颠倒的情况不能排除,如作为产品使用,请再次确认转换表数据的正确性。 份未作处理,仅对2100作为特例处理。 为简化程序,在转换函数内对输入日期的合法性未作判别,如输入1810-2-15、2008-6-31等,将导致不可预料的输出结果。 提醒:程序仅进行了抽样测试,未做逐月验证,对于相近农历月大小颠倒的情况不能排除,如作为产品使用,请再次确认转换表数据的正确性。