- 90.电脑语言, C (90:90/1237) ------------------------------------------- 90-C -
Msg : #404 [407]
From : Sunshine Lin 90:2010/633 Thu 29 Aug 96 22:05
To : Steven Shui Sun 01 Sep 96 05:03
Subj : 国历转农历
--------------------------------------------------------------------------------
.MSGID: 90:2010/633.0 32264c56
.PID: BWRA 3.02 [Eval]
.TID: GE 1.11+
回复如下...
SS> 请问有谁知道 "国历转农历" 的演算法?
SS> 望知道的前辈不佞赐教.
农历的演算法相当复杂, 多半都是由查表方式完成,
以下程式是在 Internet 找到的。
另外我还找到另一支程式是大陆人写的, 可以反堆,
还可算八字。有兴趣的话写信给我, 我再 post 出来好了!!
--------------------------------------------------------------------
发信人: smhwang@phoenix (全自动之狼), 信区: programming
标 题: --- 西历与农历转换函式 ---
发信站: 交大资工凤凰城资讯站 (Wed Jul 26 01:51:17 1995)
转信站: phoenix
Origin: kscg-ts5.kscg.gov.tw
本函式欢迎各站各版转载, 无须经本人同意. 若对历法有兴趣, 欢迎讨论.
/*
西历农历转换程式 黄晓鸣 1995,7,25
prototype: int CalConv( struct ConvDate * );
struct ConvDate
{
int Source; ==0 则输入日期为西历, !=0 则输入为农历
int SolarYear; 输出或输入之西历年份
int SolarMonth; 西历月
int SolarDate; 西历日
int LunarYear; 输出或输入之农历年份
int LunarMonth; 农历月
int LunarDate; 农历日
int Weekday; 该日为星期几 ( 0==星期日, 1==星期一, ... )
int Kan; 该日天干 ( 0==甲, 1==乙, ..., 9==癸 )
int Chih; 该日地支 ( 0==子, 1==丑, ..., 11==亥 )
};
呼叫时须设定 Souce 的值, 若为 0 则为西历转农历, 否则为农历转西历. 然後视
输入为西历或农历来设定西历或农历的年月日. 转换後的年月日会填入结构中( 农
历或西历 ), 以及该日为星期几, 天干地支.
若函式的返回值为 0 表示没有错误, 1 为输入之年份错误, 2 为输入之月份错误,
3 为输入之日期错误.
输入之西历年须在 1937 - 2031 间
输入之农历年须在 1936 - 2030 间
若须扩充, 则增加 LunarCal[]
*/
#define FIRSTYEAR 1936 /* The first year in LunarCal[] */
struct ConvDate






