C语言农历天干地支,农历一百年算法(1921~2021)【C语言代码】
【本程序在DEV C++ 4.9.9.2 下编译通过】
有关农历的东西有以下几篇文章:
/*
下面是网上一个非常流行的计算农历的算法和C代码。但是,它只能计算
1921年 到 2021年的农历,仅仅只有一百年。稍后,我将会帖出。
*/
#include
intLunarCalendar(int year,int *pmonth,int *pday)
{
const int MonthAdd[12] = {0,31,59,90,120,151,181,212,243,273,304,334};
const int LunarCalendarTable[100] ={
2635,333387,1701,1748,267701,694,2391,133423,1175,396438
,3402,3749,331177,1453,694,201326,2350,465197,3221,3402
,400202,2901,1386,267611,605,2349,137515,2709,464533,1738
,2901,330421,1242,2651,199255,1323,529706,3733,1706,398762
,2741,1206,267438,2647,1318,204070,3477,461653,1386,2413
,330077,1197,2637,268877,3365,531109,2900,2922,398042,2395
,1179,267415,2635,661067,1701,1748,398772,2742,2391,330031
,1175,1611,200010,3749,527717,1452,2742,332397,2350,3222
,268949,3402,3493,133973,1386,464219,605,2349,334123,2709
,2890,267946,2773,592565,1210,2651,395863,1323,2707,265877};
int DateCount,loop;
int i,j,n,Bit;
int month,day;
month = *pmonth;
day = *pday;
//计算从1921年2月8日(正月初一)到现在所经历的天数。
DateCount = (year - 1921) * 365 + (year - 1921) / 4 + MonthAdd[month - 1] - 38 + day;
//如今年阳历是闰年(2月有29天),而且当前月份大于2月,经历的总天数加1。
if((!(year % 4)) && (month > 2))
DateCount = DateCount + 1;
//下面是查表的算法。
loop = 1;
j = 0;
while(loop)
{
if(LunarCalendarTable[j] < 4095)
i = 11;
else
i = 12;
n = i;
while(n>=0)
{
Bit = LunarCalendarTable[j];
Bit = (Bit >> n) & 1;
if (DateCount <= (29 + Bit))
{
loop = 0;
break;
}
DateCount -= 29 + Bit;
n--;
}
if(!loop)
break;
j++;
}
year = 1921 + j;
month = i - n + 1;
day = DateCount;
if (i == 12)
{
if (month == LunarCalendarTable[j] / 65536 + 1)
{
month = 1 - month;
}
else if (month > LunarCalendarTable[j] / 65536 + 1)
month--;
}
*pmonth = month;
*pday = day;
return 1;
}
main()
{
const char *ChDay[] = {"*","初一","初二","初三","初四","初五",
"初六","初七","初八","初九","初十",
"十一","十二","十三","十四","十五",
"十六","十七","十八","十九","二十",
"廿一","廿二","廿三","廿四","廿五",
"廿六","廿七","廿八","廿九","三十"};
const char *ChMonth[] = {"*","正","二","三","四","五","六","七","八","九","十","十一","腊"};
struct tm * Local;
long t;
int year,month,day;
char str[13] = "";
#if0
t = time(NULL);
Local = localtime(&t);
year = Local->tm_year + 1900;
month = Local->tm_mon + 1;
day = Local-> tm_mday;
#else
year = 2006;
month = 1;
day = 1;
#endif
printf("%d年%d月%d日\t",year,month,day);
LunarCalendar(year,&month,&day);
if(month < 0)
{
strcat(str,"闰");
strcat(str,ChMonth[-month]);
}
else
strcat(str,ChMonth[month]);
strcat(str,"月");
strcat(str,ChDay[day]);
puts(str);
system("pause");}
C语言农历天干地支,农历一百年算法(1921~2021)【C语言代码】相关推荐
- c语言输出天干地支,农历中天干地支的计算【C代码】
[本程序在DEV C++ 4.9.9.2 下编译通过] 有关农历的东西有以下几篇文章: 计算某天是星期几[C代码] 农历算法简介以及公式 农历中天干地支的计算[C代码] 农历一百年算法(1921~20 ...
- 农历天干地支算法源代码大全(javascript、vbscript、C#、flash、C++、C等等)
农历天干地支算法源代码大全 (javascript.vbscript.C#.flash.C++.C等等) WonSoft编 文章提供计算农历天干地支及当年属相的算法源程序,使用的语言为Javascri ...
- python年份天干地支代码_农历天干地支算法源代码大全(javascript、vbscript、C#、flash、C++、C等等【转】...
文章提供计算农历天干地支及当年属相的算法源程序,使用的语言为Javascript.VBScript.C#等. 一.C# 代码(1): 原来还准备自己写算法,并研究农历规则.发现那太难和麻烦了,光是农历 ...
- C语言农历天干地支,求思路。农历年月日时推天干地支
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 以下是百度知道提供的关于"天干地支"的详细介绍. 天干地支纪日 干支纪日,60日大致合2个月一个周期:一个周期完了重复使用,周而复始, ...
- 用c语言程序编写天干地支,农历中天干地支的计算【C代码】
[本程序在DEV C++ 4.9.9.2 下编译通过] 有关农历的东西有以下几篇文章: /* 函数名称:int GetChineseEra(int year,int flag) 函数功能: 返回某年对 ...
- 2021年1--3月日历带农历天干地支
- c语言递归最小值,递归求最大最小值算法 分治策略(c语言实现)
思路:运用分治的思想,将要排序的整个数组从中间劈开,分别求其左右两边的最大最小值,然后将求出的最大最小值合起来进行比较. 当左右两边的数组小到一定程度时: (1)数组中只有一个元素,maxNum=mi ...
- c语言数值运算法和非数值运算法,数据结构(c语言)1.数据结构是一门研究非数值计算的程序设计问题中计算机的 以及它们之间的 _ 和运算等的学科。① A....
共回答了16个问题采纳率:68.8% 1.数据结构是一门研究非数值计算的程序设计问题中计算机的 A 以及它们之间的 _ B 和运算等的学科. ① A. 数据元素 B. 计算方法 C. 逻辑存储 D. ...
- SwiftUI 日期大全之日期日历年月日星期天干地支十二时辰时分秒(教程含源码)
本文价值与收获 看完本文后,您将能够作出下面的界面 看完本文您将掌握的技能 使用Timer制作个clock 显示标准中文 显示农历天干地支十二时 解决方案 1.获取标准日期 //中文公历标准 //20 ...
最新文章
- 增删改查 HTML表格页面,表格增删改查.html
- 风变编程的python课程怎么样-风变编程的Python这么火,零基础可以自学吗?
- 关于Xcode6编译Pods工程出错问题
- 深度学习(四)——RNN, LSTM, 神经元激活函数进阶
- 为什么会出现docker
- SPI和RAM IP核
- exposed beyond app through Intent.getData(),或FileUriExposedException
- TypeScript函数
- 【网站】给网站添加一个夜间模式切换按钮
- 一不小心,老司机又翻车了
- 手把手教你用Python实现人脸识别,辨别真假!
- 【车道线检测与寻迹】【实践】4月17 线车位的实验思路与后续工作构想
- c语言的异步回调函数,C语言函数的回调函数
- SVN设置成中文版本
- 软件开发工作经验分享
- #S/4HANA 1610: Use case series intro and collection
- CDD数据库文件制作(一)
- 数据结构实验题——一元多项式计算
- android 最新 九宫格,Android开发中怎么显示一个九宫格图片
- evo测试工具错误: evo module evo.main_traj crashed - no logfile written (disabled)
热门文章
- 吉林大学计算机学院考研大纲,吉林大学计算机科学与技术学院2020考研复试大纲预测...
- 1584 mysql_【原创】基于MySQL 水平分区的优化示例
- 未在服务器上找到sql安装程序文件,MS SQL Server 2000/以前的某个程序安装已在安装计算机上创建挂起的文件操作。...
- 【GlobalMapper精品教程】050:点线面缓冲区分析案例
- 【功能规格说明书】命劫开发
- 【Verilog七段译码器】
- DFS Cut twigs
- 武汉python招聘与数据_(武汉有岗)星融元数据技术有限公司招聘公告
- android微信源生SDK分享问题
- MTD原始设备与NANDFLASH硬件驱动交互