C语言 干支纪年查询(已验证1900-2100)

干支(gānzhī)纪年法是中国历法上自古以来就一直使用的纪年方法。
干支是天干和地支的总称。
把干支顺序相配正好六十为一周,周而复始,循环记录,这就是俗称的"干支表"。
甲、乙、丙、丁、戊、己、庚、辛、壬、癸等十个符号叫天干;
子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥等十二个符号叫地支。
所谓的干支纪年就是把一个年份用一个天干和一个地支组合来表示;
相应的也有干支纪月 干支纪日 干支纪时;
而 干支纪 年 月 日 时 就组成了生辰八字;
具体纪年查询结果举例如下:
上图是查询的1900-2100年干支纪年结果下面是具体的C语言程序:

/*输入要查询的年份区间 查询干支纪年*/
#include<stdio.h>
#include<string.h>
char *tiang[]={"癸","甲","乙","丙","丁","戊","己","庚","辛","壬"};
char *dizhi[]={"亥","子","丑","寅","卯","辰","巳","午","未","申","酉","戌"};
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 pr1(int n)
{
	printf("%s",*(tiang+n));/*打印天干*/
}
int pr2(int n)
{
	printf("%s",*(dizhi+n));/*打印地支*/
}
int main()
{ 
  int year,m,n;
  printf("######干支纪年查询######\n\n");
  printf("请输入要查询的年份区间:\n\n");
  printf("举例:1900 2100\n\n");
  scanf("%d%d",&m,&n);
  printf("\n\n查询结果如下:\n\n");
  for(year=m;year<=n;year++)
  {
  int tg1,dz1;
  tg1=ytian(year);
  dz1=ydiz(year); 
  printf("%d年  ",year);
  pr1(tg1);pr2(dz1);printf("\t");
  if(year%10==9)printf("\n");
  }
 printf("\n\n######干支纪年查询######\n");
}

本文程序代码看似复杂 其实是因为本段代码只是原代码中的一部分,扩展后可以根据输入的 年 月 日 时 查询相应的生辰八字。


版权声明:本文为songbai220原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。