干支是天干和地支的总称
把干支顺序相配正好六十为一周,周而复始,循环记录,这就是俗称的"干支表"。
甲、乙、丙、丁、戊、己、庚、辛、壬、癸 等十个符号叫天干;
子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥 等十二个符号叫地支。
所谓的干支纪年就是把一个年份用一个天干和一个地支组合来表示;
相应的也有干支纪月 干支纪日 干支纪时;
而 干支纪 年 月 日 时 就组成了生辰八字;
生辰八字,简称八字,是指一个人出生时的干支历日期;
年月日时共四柱干支,每柱两字,合共八个字。
生辰八字在中国民俗信仰中占有重要地位,
古代中国道家、星相家据此推算人的命运的好坏。
五行 指的是 金 木 水 火 土
对应关系如下:
天干地支的五行属性表
天干:
甲 - 木、乙 - 木、丙 - 火、丁-火、戊-土、己-土、庚-金、辛-金、
壬-水、癸-水

地支
子 - 水、丑 - 土、寅 - 木、卯-木、辰-土、巳-火、午-火、未-土、
申-金、酉-金、戌-土、亥-水

五行纳音命理对照表


以上是关于生辰八字五行及年干支本命纳音的简单介绍,下面是代码运行情况及代码:

查询结果如下图:


2019-4-8 修改:
增加 对输入数据的判断,“错误“–重新进入程序,正确 继续查询
增加 0”退出,or 任意键 继续查询

修改如下:
增加了以下代码段1:(判断输入是否正确

if(month>12||month<1||date<1||date>31||time>2400){printf("\t您的输入错误,重新进入程序\n\n");main();}else {


增加了以下代码段2::(实现重复查询,直到主动选择退出

printf("\t请选择0:退出 or 任意键继续查询\n\n\t");getchar();if(getchar()=='0'){printf("————————感谢使用 生辰八字五行查询 小程序————————\n\n");printf("\t\t\t再见!\n");return 0;  }else  {printf("\n\n");main(); }}


另外,调整了输入输出的格式,更方便查看。

以下是相关程序的代码:

/*输入出生年月日时,返回生辰八字五行*/
#include<stdio.h>
#include<string.h>
char *tiang[]={"癸","甲","乙","丙","丁","戊","己","庚","辛","壬"};
char *dizhi[]={"亥","子","丑","寅","卯","辰","巳","午","未","申","酉","戌"};
char *wuxing[]={"木","火","土","金","水"};
char *wxnayin[]={"海中金","炉中火","大林木","路旁土","剑锋金","山头火","涧下水","城头土","白蜡金","杨柳木","泉中水","屋上土","霹雳火","松柏木","长流水","沙中金","山下火","平地木","壁上土","金箔金","覆灯火","天河水","大驿土","钗钏金","桑柘木","大溪水","沙中土","天上火","石榴木","大海水"};int ytian(int year)  /*计算年对应的天干*/
{ int i;i=year-3;return (i%10);}
int ydiz(int year)  /*计算年对应的地支*/
{int i;i=year-3;return (i%12);}
int mtian(int t1,int t2)  /*计算月对应的天干*/
{ int i;i=t1%5*2+1+t2-2;i=i%10;return (i);}
int dtian(int y,int m,int d)  /*计算日对应的天干*/
{ int g,c,j;if(m<=2)m+=12;c=y/100;y=y%100;g=4*c+c/4+5*y+y/4+3*(m+1)/5+d-3;j=g%10;return (j);}
int ddi(int y,int m,int d)  /*计算日对应的地支*/
{ int z,c,i,j;if(m<=2)m+=12;if(m%2)i=6;else i=0;c=y/100;y=y%100;z=8*c+c/4+5*y+y/4+3*(m+1)/5+d+7+i;j=z%12+6;if(j>7)j=j%12;return (j);}
int ttian(int t1,int t2)  /*计算时对应的天干*/
{ int i;//if(t1%5==0)i=9;// elsei=(t1*2-1)+(t2/100+1)/2;i=i%10;return (i);}
int ttd(int t)
{ int tem;t=t/100;if(t>=1&&t<23)tem=(t+1)/2+1;else tem==1;return (tem%12);
}
int tgwx(int n)/*天干对应五行*/
{return ((n+1)/2-1);
}
int dzwx(int n)/*地支对应五行*/
{if(n==3||n==4)return 0;else if(n==6||n==7)return 1;else if(n==9||n==10)return 3;else if(n==0||n==1)return 4;else return 2;
}
int pr1(int n)/*天干输出*/
{printf("%s",*(tiang+n));
}
int pr2(int n)/*地支输出*/
{printf("%s",*(dizhi+n));
}
int pr3(int n)/*五行输出*/
{printf("%s",*(wuxing+n));
}
int main()
{ int year,month,date,time;printf("————————欢迎使用 生辰八字五行查询 小程序————————\n\n\t");printf("请输入阳历出生年、月、日、时:\n\n\t");printf("举例:2016 9 25 1702\n\n\t");scanf("%d%d%d%d",&year,&month,&date,&time);if(month>12||month<1||date<1||date>31||time>2400){printf("\t您的输入错误,重新进入程序\n\n");main();}else {int tg1,tg2,tg3,tg4,dz1,dz2,dz3,dz4;tg1=ytian(year);dz1=ydiz(year); tg2=mtian(tg1,month);if(month+1>=11)dz2=month-11;else dz2=month+1;tg3=dtian(year,month,date);dz3=ddi(year,month,date);tg4=ttian(tg3,time);dz4=ttd(time);printf("\n\t您查询生辰的八字五行如下:\n\n");printf("\t 年\t 月\t 日\t 时\n\n");printf("\t");pr1(tg1);pr2(dz1);printf("\t");pr1(tg2);pr2(dz2);printf("\t");pr1(tg3);pr2(dz3);printf("\t");pr1(tg4);pr2(dz4);printf("\n\n");printf("\t");pr3(tgwx(tg1));pr3(dzwx(dz1));printf("\t");pr3(tgwx(tg2));pr3(dzwx(dz2));printf("\t");pr3(tgwx(tg3));pr3(dzwx(dz3));printf("\t");pr3(tgwx(tg4));pr3(dzwx(dz4));printf("\n\n");printf("\n\t您查询的生辰八字五行纳音为:");printf("\%s\n\n",*(wxnayin+(((year-1924)%60)/2)));printf("\n\n");printf("\t请选择0:退出 or 任意键继续查询\n\n\t");getchar();if(getchar()=='0'){printf("————————感谢使用 生辰八字五行查询 小程序————————\n\n");printf("\t\t\t再见!\n");return 0;  }else  {printf("\n\n");main(); }}}

改进的代码

/*输入出生年月日时,返回生辰八字五行*/
#include<stdio.h>
#include<string.h>
#include<windows.h>
char *tiang[]={"癸","甲","乙","丙","丁","戊","己","庚","辛","壬"};
char *dizhi[]={"亥","子","丑","寅","卯","辰","巳","午","未","申","酉","戌"};
char *wuxing[]={"木","火","土","金","水"};
char *wxnayin[]={"海中金","炉中火","大林木","路旁土","剑锋金","山头火","涧下水","城头土","白蜡金","杨柳木","泉中水","屋上土","霹雳火","松柏木","长流水","沙中金","山下火","平地木","壁上土","金箔金","覆灯火","天河水","大驿土","钗钏金","桑柘木","大溪水","沙中土","天上火","石榴木","大海水"};int ytian(int year)  /*计算年对应的天干*/
{ int i;i=year-3;return (i%10);}
int ydiz(int year)  /*计算年对应的地支*/
{int i;i=year-3;return (i%12);}
int mtian(int t1,int t2)  /*计算月对应的天干*/
{ int i;i=t1%5*2+1+t2-2;i=i%10;return (i);}
int dtian(int y,int m,int d)  /*计算日对应的天干*/
{ int g,c,j;if(m<=2)m+=12;c=y/100;y=y%100;g=4*c+c/4+5*y+y/4+3*(m+1)/5+d-3;j=g%10;return (j);}
int ddi(int y,int m,int d)  /*计算日对应的地支*/
{ int z,c,i,j;if(m<=2)m+=12;if(m%2)i=6;else i=0;c=y/100;y=y%100;z=8*c+c/4+5*y+y/4+3*(m+1)/5+d+7+i;j=z%12+6;if(j>7)j=j%12;return (j);}
int ttian(int t1,int t2)  /*计算时对应的天干*/
{ int i;
//  if(t1%5==0)i=9;// elsei=(t1*2-1)+(t2/100+1)/2;i=i%10;return (i);}
int ttd(int t)
{ int tem;t=t/100;if(t>=1&&t<23)tem=(t+1)/2+1;else tem==1;return (tem%12);
}
int tgwx(int n)/*天干对应五行*/
{return ((n+1)/2-1);
}
int dzwx(int n)/*地支对应五行*/
{if(n==3||n==4)return 0;else if(n==6||n==7)return 1;else if(n==9||n==10)return 3;else if(n==0||n==1)return 4;else return 2;
}
int pr1(int n)/*天干输出*/
{printf("%s",*(tiang+n));
}
int pr2(int n)/*地支输出*/
{printf("%s",*(dizhi+n));
}
int pr3(int n)/*五行输出*/
{printf("%s",*(wuxing+n));
}
void meanu()
{system("title 八字五行查询  Powered by : RedMaple");system("mode con cols=50 lines=30");system("color 74") ;
}
int main()
{ system("cls");meanu();int year,month,date,time;printf("\n————欢迎使用 生辰八字五行查询 小程序————\n\n\t");printf("请输入阳历出生年、月、日、时:\n\n\t");printf("举例:1980 9 25 1702\n\n");printf("\t*********************************\n\t");scanf("%d%d%d%d",&year,&month,&date,&time);if(month>12||month<1||date<1||date>31||time>2400||year<1924){printf("\t您的输入错误,重新进入程序\n\n");main();}else {int tg1,tg2,tg3,tg4,dz1,dz2,dz3,dz4;tg1=ytian(year);dz1=ydiz(year); tg2=mtian(tg1,month);if(month+1>=11)dz2=month-11;else dz2=month+1;tg3=dtian(year,month,date);dz3=ddi(year,month,date);tg4=ttian(tg3,time);dz4=ttd(time);printf("\n\t*********************************\n");printf("\n\t您查询生辰的八字五行如下:\n\n");printf("\t 年\t 月\t 日\t 时\n\n");printf("\t");pr1(tg1);pr2(dz1);printf("\t");pr1(tg2);pr2(dz2);printf("\t");pr1(tg3);pr2(dz3);printf("\t");pr1(tg4);pr2(dz4);printf("\n\n");printf("\t");pr3(tgwx(tg1));pr3(dzwx(dz1));printf("\t");pr3(tgwx(tg2));pr3(dzwx(dz2));printf("\t");pr3(tgwx(tg3));pr3(dzwx(dz3));printf("\t");pr3(tgwx(tg4));pr3(dzwx(dz4));printf("\n\n");printf("\n\t五行纳音为:");printf("\%s\n\n",*(wxnayin+(((year-1924)%60)/2)));printf("\t*********************************\n");printf("\t【0】退出   【】任意键继续查询\n\n\t");getchar();if(getchar()=='0'){system("cls");printf("\n\n————感谢使用 生辰八字五行查询 小程序————\n\n");printf("\t\t\t再见!\n");return 0; }else  {printf("\n\n");main(); }}}
/*****************************************************************************/
公元**年的天干地支计算方法
10天干:甲乙丙丁戊己庚辛壬癸
12地支:子丑寅卯辰巳午未申酉戌亥甲子年 1924  1984  2044
年 除以 60 余 4 即为 甲子年年的天干地支计算天干计算  年 -3  再%10 取余 所得余数 与10天干 一 一对应
地支计算 年 -3  再%12 取余 所得余数 与12地支 一 一对应月的天干地支计算(阳历)天干计算  年天干数%5 取余 所得余数*2+1   加上月份-2 与天干 一 一对应 (只有5个,按余数0-4,甲丙戊庚壬)
地支计算 丑寅卯辰巳午未申酉戌亥子 与12月一 一对应从已知日期计算干支纪日的公式为:G = 4C + [C / 4] + 5y + [y / 4] + [3 * (M + 1) / 5] + d - 3Z = 8C + [C / 4] + 5y + [y / 4] + [3 * (M + 1) / 5] + d + 7 + i其中 C 是世纪数减一,y 是年份后两位,M 是月份,d 是日数。1月和2月按上一年的13月和14月来算。奇数月i=0,偶数月i=6。G 除以10的余数是天干,Z 除以12的余数是地支。计算时带[ ]的数表示取整。例如:查2006年4月1日的干支日。 将数值代入计算公式。G =4*20 + [20 / 4] + 5*06 + [06 / 4] + [3 * (4 + 1) / 5] + 1 - 3 =117除以10 余数为 7 ,天干的第7位是‘庚’。Z =8*20 + [20 / 4] + 5*06 + [06 / 4] + [3 * (4 + 1) / 5] + 1 + 7 + 6 =213除以12 余数为 9 ,地支的第9位是‘申’。答案是:2006年4月1日的干支日是庚申日。12时辰对应的天干地支天干计算甲乙丙丁戊己庚辛壬癸  日天干 *2-1+((time%100+1)/2)%10  与10天干一 一对应地支计算子丑寅卯辰巳午未申酉戌亥  与12时辰一 一对应/*************************************************************************************/

查询方法来源于网络,经过自己的整理,推算,总结。
最终有了上面的代码,仅作为学习交流用。
如果用于商业用途,请提前声明。

C语言 生辰八字+五行+纳音 查询相关推荐

  1. 五行顺口溜_五行纳音口诀,五行相生相克歌诀

    六十甲子是汉族人民最早最大的发明创造,用来纪年.纪月.纪日.纪时.而六十甲子中也有关于五行的相关解说,那么你知道五行相生相克歌诀是什么吗?本期的五行相生相克带你去了解. 六十甲子五行纳音口诀 海沙箔锋 ...

  2. js 万历年五行纳音算法

    <script type="text/javascript"> /*write my adengou 2015.3.22 */ var _FiveElements ={ ...

  3. Python纳音五行计算

      摘要:取名讲究五行平衡,生辰八字,五行归属,年月日时四柱如何计算?本文主要实现基于Python的纳音五行测算,解释程序设计思路以及五行测算算法. 一.引言   人们常说生辰八字,是如何测算的?有了 ...

  4. 五行顺口溜_纳音五行口诀

    纳音五行口诀: 子午银灯架壁钩, 辰戌烟满寺钟楼. 申寅汉地燥柴湿, 纳音五行此中求. 注释: 1 . 子午.辰戌.申寅:即分别以甲子.甲午,甲辰.甲戌,甲申.甲寅为开头 顺排的六十花甲中的六旬. 2 ...

  5. php编写六十甲子纳音表_六十甲子纳音表详细说明,看看你属于什么命,属于那个颜色...

    六十甲子纳音表详细说明 ,六十甲子与五行十二生肖的对应关系. 1.甲子乙丑海中金,白,此年生人,是海中金命,属相是白鼠和白牛 2.丙寅丁卯炉中火,红,此年生人,是炉中火命,属相是红虎和红兔 3.戊辰已 ...

  6. php编写六十甲子纳音表_六十甲子纳音表

    何为六十甲子纳音?十天干与十二地支按顺序两两相配, 从甲子到癸亥, 共六十个组合, 故称六十甲子. 每两组配一纳音五行.亦称六十花甲子. 六十甲子纳音表 甲子 乙丑 海中金 丙寅 丁卯 炉中火 戊辰 ...

  7. php编写六十甲子纳音表_史上最完整的六十甲子纳音表详细说明

    六十甲子是汉族人民最早和最大的发明,其历史已有上千年,其用途是纪年.纪月.纪日.纪时.在古时候,就是我们的时钟,以六十年为一个周期,纪月为五年一个周期,纪日为六十天一个周期,纪时为五天一个周期.接下来 ...

  8. php编写六十甲子纳音表_六十甲子顺序表

    六十甲子有时写作60甲子是最古老的用途,60甲子是纪年.纪月.纪日.纪时,60甲子纪年为60年一个周期,60甲子纪月为5年一个周期,60甲子纪日为60天一个周期,60甲子纪时为5天一个周期. ①六十甲 ...

  9. php编写六十甲子纳音表_六十甲子纳音表全表图

    问:古人常说的"一甲子"是现在的几年?答:"一甲子"=60年干支的一个循环,这个循环就叫"一甲子",正好是60年.工具查询 [查看详细] 六 ...

最新文章

  1. SDK与API的联系与区别
  2. profile 文件含义
  3. ArcGis For Flex 之 QueryTask地理坐标展现【原创】
  4. C++ nlohmann/json 的主要用法
  5. 谈EXPORT_SYMBOL使用
  6. 泛函分析3——线性空间和赋范线性空间总结
  7. 同步中断和异步中断区别
  8. python数据统计代码_Python 数据的累加与统计的示例代码
  9. 男朋友和女朋友的区别。。。
  10. python进程池:multiprocessing.pool
  11. 【安全】安装phpLDAPadmin管理LDAP
  12. Doug Lea 在 J.U.C 包里面写的 BUG 又被网友发现了......
  13. 使用 Commander 写自己的 Nodejs 命令
  14. 随机数是骗人的,.Net、Java、C为我作证 - 杨中科 - 博客园
  15. Git:clone时报错403
  16. 自定义 matplotlib 设置
  17. C#海康解码器上大屏代码事例
  18. Zoom支持自动生成字幕;SharePlay上线;Safari 更新导致大量bug |WebRTC风向
  19. 按颜色分类:蓝紫色系(Purple Blue)
  20. Day25|组合板子|216. 组合总和 III| 17. 电话号码的字母组合

热门文章

  1. 【组合数学】拉姆齐问题以及拉姆齐数(图文详解)
  2. AnnotationFormatterFactory简单理解
  3. 单例模式的创建(饿汉模式懒汉模式)
  4. 大数据风控---机器学习在个人征信判别上的应用
  5. 数学建模————统计问题之分类/聚类(二)
  6. 那个在阿里养猪的工程师,5年了……
  7. vue中打印表格,打印不全的问题
  8. 为vscode配置clangd
  9. EXCEL——DOI实现屏幕嵌套EXCEL表格
  10. Java 实现OS进程安全检测算法之银行家算法(Bankers Algorithm)