谁有把阳历转换成阴历的C语言程序代码?

我正好有资源。这是我的原创节目。数据压缩模式、转换、参考点等。都是我自己设计的。它可以准确地将公历转换为农历,将农历转换为公历。同时还提供了自行设计的月球数据库,有套路和月球信息提取工具,可以自定义年份区间(1600-7000)。

农历信息提取器生成的头文件(限于此处篇幅,跨度只有10年)

/*****************************************************

*?农历信息(查表)?*

*?生成时间:2014/12/25?*

*****************************************************/

#ifndef?_LUNARDATA_H

#定义?_LUNARDATA_H

#定义?开始年份?1600?//定义数据开始年份(公历)

#定义?年末?1610?//定义数据终止的年份(不包括今年)

矮?iPreLeapIndex =-1;//开始年份之前的农历闰月索引对应于iPreMonth中的序列号。如果是-1,说明没有闰月。

//从起始年前一年的农历十月开始,每个月的第一天对应起始年中该年的序数。

//小于零的序数表示在开始年份之前。

矮?ipremont[3]= {-44,-15,15 };

//公历年农历正月初一的序数(年内序数指定元旦为0)。

未签名?夏尔?uLunarNewYearOrdinal[10]= {

44,33,22,41,30,48,37,27,46,34?//1600-1609

};

//月份大小数组,从“START_YEAR”的第一个月到“END_YEAR”前一年的(闰)12月。

//每年的十二、十三个月用两个字节表示,最高两位数设为10,后面是闰月,从1月到12月。最小的月份先来,

//1?00还是1?x?x?x?x?x?x?x?x?x?x?x?x?x

//1?012月是0,13月是1。从1月到12月,一个月的天数是0,一个月的天数是1。

//注意,如果没有闰月,月份位置是12,总长度是15。如果有闰月,月份位置是13,总长度是16。

未签名?矮?LunarMonthDX[10]={

0x4A5D,0x492D,0xB92B,0x4A95,0xB695,0x46AA,0x4AD5,0xAAB5,0x44BA,0x4A5B?//1600-1609

};

//闰月数组,4位表示一个农历年的闰月信息,1个字节表示相邻的两个年份。

//?x?x?x?xx?x?x?x

//?第①年第②年

未签名?夏尔?LeapMonth[5]={

0x00,0x20,0x90,0x06,0x00?//1600-1609

};

//24节气数组,用一年12字节表示,即每个月一个字节(注:此压缩算法适用于1600之后的数据)。

//比如1901年的节气是:

//1月?二月,三月,四月,五月,六月?七月八月九月65438+十月?11月?65438+二月

//?6,?21,?4,?19,6,?21,5,?21,6,?22,6,?22,8,?23,8,?24,8,?24,8,?24,8,?23,8,?22

//?9,?6,11,?4,9,6,10,?6,9,?7,9,?7,7,?8,7,?9,7,?9,7,?9,7,?8,7,?15

//小寒?大寒?春天的开始?下雨?害怕吗?春分?清明?谷雨?漫长的夏天?小曼?芒种?萨默·至日?有点暑热?暑热?立秋?夏天?白鹿?秋分?寒露?初霜?立冬?小雪?大雪?冬季至日

//这样每月两个节气对应的数据小于16,用一个字节存储第一个节气在高位的数据和第二个节气在低位的数据,可以得到下表:

未签名?夏尔?SolarTerms[120]={

0x96,0x96,0x87,0x97,0x87,0x97,0x87,0x96,0x96,0x96,0x96,0x96,//1600

0xA6,0xA5,0x87,0x87,0x87,0x87,0x87,0x97,0x96,0x97,0x96,0x96,?//1601

0x96,0xA5,0x88,0x87,0x88,0x87,0x87,0x87,0x96,0x87,0x96,0x97,?//1602

0x96,0xA6,0x78,0x87,0x78,0x87,0x88,0x87,0x97,0x87,0x96,0x87,?//1603

0x96,0x96,0x87,0x97,0x87,0x97,0x87,0x96,0x96,0x96,0xA6,0x96,?//1604

0xA6,0xA5,0x87,0x87,0x87,0x87,0x87,0x97,0x96,0x96,0x96,0x96,?//1605

0x96,0xA5,0x88,0x87,0x88,0x87,0x87,0x87,0x96,0x87,0x96,0x97,?//1606

0x96,0xA5,0x78,0x87,0x78,0x87,0x88,0x87,0x97,0x87,0x96,0x87,?//1607

0x96,0x96,0x87,0x97,0x87,0x96,0x87,0x96,0x96,0x96,0xA6,0x96,?//1608

0xA6,0xA5,0x87,0x87,0x87,0x87,0x87,0x97,0x96,0x96,0x96,0x96?//1609

};

//每年数九、梅花、梅花、三伏天(以当年元旦为准)。

//第一个日历年是三九年(适用于公元1600年之后)。

//在数组中,每行代表一年,有四年、九年、五年、九年...省略,而且每九个相差9天。同理,省略二或九,中量为初始阶段后10天。对应如下(括号中省略):

//三九?(49?五个还是九个?六十九?七个还是九个?八个还是九个?99)?变成梅子?没李子了?第一次蹲?(中音)?去年秋天?十九?(29)注:9月19日是冬季至日。

未签名?矮?extreme season[60]= {

8,165,190,199,219,355,7,159,196,193,223,355,?//1600-1601

7,164,191,198,218,355,8,159,198,193,223,355,?//1602-1603

8,164,193,198,218,355,7,158,199,202,222,355,?//1604-1605

7,163,194,197,227,355,8,158,189,202,222,355,?//1606-1607

8,163,196,197,227,355,7,167,190,201,221,354?//1608-1609

};

#endif?//_LUNARDATA_H