QQ网名大全

万年历查询程序. c语言代码

除了天数差计算,基本上是完成了你所提出的功能(天数差计算其实已经提供了年内序数计算方方法,可以在此基础上完善即可)。包含星期计算、公历转农历、农历转公历、节气查询。数据与算法均为原创,绝非网上复制而来。附件中有源代码,同时附带农历数据提取工具,可提取1600到7000年之间的任意年份区间,提取后的数据为压缩数据,占用空间小,同时数据包含数九、三伏、入梅和出梅,非常适合写一份完整的万年历。

部分核心算法函数如下:

//判断闰年,参数:年份,返回值:0-平年,1-闰年
int **leapyear(int iyear);
//计算日期在年内的序数,参数:年,月,日,年内序数,返回值:0-失败,1-成功
int getdaysnuminyear(int iyear, int imonth, int iday,int *ndays);
//从年内序数计算月、日,参数:年,年内序数,月,日,返回值:0-失败,1-成功
int getdatefromdays(int iyear, int ndays, int *imonth, int *iday);
//检验年、月、日的合法性,参数:年,月,日,返回值:0-失败,1-成功
int datecheck(int iyear,int imonth,int iday);
//获取农历新年的公历年内序数,参数:农历年,返回值:农历新年的公历年内序数
int lunargetnewyearordinal(int ilunaryear);
//获取农历月的天数,参数:农历年,农历月,是否为闰月,返回值:该农历月的天数,为0代表参数无效
int lunargetdaysofmonth(int ilunaryear,int ilunarmonth,int **leapmonth);
//展开大小月数据表(某一年的),参数:农历年,从上一年十一月开始到当前年份(闰)十二月的每月天数,返回值:0-失败,1-成功
int lunarexpanddx(int ilunaryear,int idayofmonth[15]);
//获取农历某一年的闰月情况,参数:农历年,返回值,该年的闰月月份,0表示无闰月
int lunargetleapmonth(int ilunaryear);
//公历转农历,参数:公历年、月、日,农历年、月、日,是否为闰月,返回值:0-失败,1-成功
int gongli2nongli(int iyear,int imonth,int iday,int *ilunaryear,int *ilunarmonth,int *ilunarday,int *i**leapmonth);
//农历转公历,参数:家历年、月、日,是否为闰月,公历年、月、日,返回值:0-失败,1-成功
int nongli2gongli(int ilunaryear,int ilunarmonth,int ilunarday,int i**leapmonth,int *iyear,int *imonth,int *iday);
//得到指定年份的节气信息,首个是小寒
int getjieqi(int iyear,int umonth,unsigned int ujieqi[2]);
//计算星期
unsigned int getdayofweek(int iyear,int umonth,int uday);

源代码请看附件吧。

佚名
2024-06-10 09:26:02
最佳回答
类似问题(10)