公元前和公元纪年转换成天干地支纪年

先确定一年是什么年在用循环做也行,用取余操作可以很好地避免循环

例如1911年是辛亥年。

此处用的是公式

 1 # include <stdio.h>
 2 # include <string.h>
 3 # include <math.h>
 4 char a[10][10] = {"Jia", "Yi", "Bing", "Ding", "Wu", "Ji", "Geng", "Xin", "Ren", "Gui"};
 5 char b[12][10] = {"zi", "chou", "yin", "mao", "chen", "si", "wu", "wei", "shen", "you", "xu", "hai"};
 6 int main()
 7 {
 8     int i,n,year,x,y;
 9     while(scanf("%d",&n)!=EOF)
10     {
11         
12         
13         while(n--)
14         {
15             scanf("%d",&year);
16             if(year>0)
17             {
18                 x=(year-3+10)%10;
19                 if(x==0)
20                     x=10;
21                 y=(year-3+12)%12;
22                 if(y==0)
23                     y=12;
24                 printf("%s%s\n",a[x-1],b[y-1]);
25             }
26             else if(year < 0)
27             {
28                 year=-year;
29                 int r=year%10;
30                 x=8-r;
31                 if(x<0)
32                     x=10+x;
33                 if(x==0)
34                     x=10;
35                 y=year%12;
36                 y=10-y;
37                 if(y<0)
38                     y=y+12;
39                 else if(y==0)
40                     y=12;
41                 printf("%s%s\n",a[x-1],b[y-1]);
42             }
43             else
44             {
45                 printf("Gengshen\n");
46             }
47         }
48     }
49     return 0;
50 }

 

 

posted on 2013-08-24 14:33  随风浪子的博客  阅读(526)  评论(0)    收藏  举报

导航