高分求公历转换为农历的代码,要求支持2050年前的.多谢

高分求公历转换为农历的代码,要求支持2050年前的.谢谢
rt

------解决方案--------------------
/******************************************************************************
下面为阴历计算所需的数据,为节省存储空间,所以采用下面比较变态的存储方法.

*******************************************************************************/
//数组gLunarDay存入阴历1901年到2100年每年中的月天数信息,
//阴历每月只能是29或30天,一年用12(或13)个二进制位表示,对应位为1表30天,否则为29天
WORD gLunarMonthDay[]=
{
//测试数据只有1901.1.1 --2050.12.31
0X4ae0, 0Xa570, 0X5268, 0Xd260, 0Xd950, 0X6aa8, 0X56a0, 0X9ad0, 0X4ae8, 0X4ae0, //1910
0Xa4d8, 0Xa4d0, 0Xd250, 0Xd548, 0Xb550, 0X56a0, 0X96d0, 0X95b0, 0X49b8, 0X49b0, //1920
0Xa4b0, 0Xb258, 0X6a50, 0X6d40, 0Xada8, 0X2b60, 0X9570, 0X4978, 0X4970, 0X64b0, //1930
0Xd4a0, 0Xea50, 0X6d48, 0X5ad0, 0X2b60, 0X9370, 0X92e0, 0Xc968, 0Xc950, 0Xd4a0, //1940
0Xda50, 0Xb550, 0X56a0, 0Xaad8, 0X25d0, 0X92d0, 0Xc958, 0Xa950, 0Xb4a8, 0X6ca0, //1950
0Xb550, 0X55a8, 0X4da0, 0Xa5b0, 0X52b8, 0X52b0, 0Xa950, 0Xe950, 0X6aa0, 0Xad50, //1960
0Xab50, 0X4b60, 0Xa570, 0Xa570, 0X5260, 0Xe930, 0Xd950, 0X5aa8, 0X56a0, 0X96d0, //1970
0X4ae8, 0X4ad0, 0Xa4d0, 0Xd268, 0Xd250, 0Xd528, 0Xb540, 0Xb6a0, 0X96d0, 0X95b0, //1980
0X49b0, 0Xa4b8, 0Xa4b0, 0Xb258, 0X6a50, 0X6d40, 0Xada0, 0Xab60, 0X9370, 0X4978, //1990
0X4970, 0X64b0, 0X6a50, 0Xea50, 0X6b28, 0X5ac0, 0Xab60, 0X9368, 0X92e0, 0Xc960, //2000
0Xd4a8, 0Xd4a0, 0Xda50, 0X5aa8, 0X56a0, 0Xaad8, 0X25d0, 0X92d0, 0Xc958, 0Xa950, //2010
0Xb4a0, 0Xb550, 0Xb550, 0X55a8, 0X4ba0, 0Xa5b0, 0X52b8, 0X52b0, 0Xa930, 0X74a8, //2020
0X6aa0, 0Xad50, 0X4da8, 0X4b60, 0X9570, 0Xa4e0, 0Xd260, 0Xe930, 0Xd530, 0X5aa0, //2030
0X6b50, 0X96d0, 0X4ae8, 0X4ad0, 0Xa4d0, 0Xd258, 0Xd250, 0Xd520, 0Xdaa0, 0Xb5a0, //2040
0X56d0, 0X4ad8, 0X49b0, 0Xa4b8, 0Xa4b0, 0Xaa50, 0Xb528, 0X6d20, 0Xada0, 0X55b0, //2050

};


------解决方案--------------------
作者:yaozheng 发表时间:2004-4-29 17:15:00

前段时间做软件写了个公历转农历的函数,目前公开给大家参考,有兴趣的朋友可以在此基础上进一步完善其功能

/*------------农历转换函数-----------*/
char *GetDayOf(PSYSTEMTIME pSt)
{
/*天干名称*/
const char *cTianGan[] = { "甲 ", "乙 ", "丙 ", "丁 ", "戊 ", "己 ", "庚 ", "辛 ", "壬 ", "癸 "};
/*地支名称*/
const char *cDiZhi[] = { "子 ", "丑 ", "寅 ", "卯 ", "辰 ", "巳 ", "午 ",
"未 ", "申 ", "酉 ", "戌 ", "亥 "};
/*属相名称*/
const char *cShuXiang[] = { "鼠 ", "牛 ", "虎 ", "兔 ", "龙 ", "蛇 ",
"马 ", "羊 ", "猴 ", "鸡 ", "狗 ", "猪 "};
/*农历日期名*/
const char *cDayName[] = { "* ", "初一 ", "初二 ", "初三 ", "初四 ", "初五 ",
"初六 ", "初七 ", "初八 ", "初九 ", "初十 ",
"十一 ", "十二 ", "十三 ", "十四 ", "十五 ",
"十六 ", "十七 ", "十八 ", "十九 ", "二十 ",
"廿一 ", "廿二 ", "廿三 ", "廿四 ", "廿五 ",
"廿六 ", "廿七 ", "廿八 ", "廿九 ", "三十 "};
/*农历月份名*/
const char *cMonName[] = { "* ", "正 ", "二 ", "三 ", "四 ", "五 ", "六 ",
"七 ", "八 ", "九 ", "十 ", "十一 ", "腊 "};

/*公历每月前面的天数*/
const int wMonthAdd[12] = {0,31,59,90,120,151,181,212,243,273,304,334};