get_name.cpp
上传用户:shjxjhsbc
上传日期:2019-08-28
资源大小:1k
文件大小:4k
源码类别:

控制台编程

开发平台:

C/C++

  1. #include <string.h>  
  2. #include <stdio.h>
  3. #include <conio.h> 
  4. int na,nb,nc;//姓名繁体字笔画数 
  5.    
  6. int f_t;//天格
  7. int f_r;//人格
  8. int f_d;//地格
  9. int f_w;//外格
  10. int f_z;//总格
  11. int count = 0;
  12.   
  13. //吉利的数理
  14. int i_fine[43] = {1,3,5,6,8,11,13,15,16,17,18,21,23,24,25,29,31,32,33,35,37,38,39,41,45,47,48,51,52,57,58,61,63,65,67,68,71,72,73,75,77,78,81};
  15. //好的三才相配(天格,人格,地格)
  16. int i_good[25] = {111,112,113,121,123,151,211,212,213,221,233,321,323,332,333,334,343,344,433,434,443,454,511,513,543};
  17. //好的人格与外格匹配
  18. int i_r_w[41] = {11,12,13,14,15,19,10,21,23,38,32,33,35,36,42,45,51,53,54,55,56,57,58,61,63,65,67,75,76,77,78,79,81,85,86,89,91,92,97,98,7};
  19. //五格的数理运势计算 ,按80取模
  20. int get_fine(int fn)
  21. {
  22.    if(fn <= 81)
  23.    {
  24.          return fn;
  25.    }
  26.    else if(fn % 80 == 0)
  27.    {
  28.          return 80;
  29.    }
  30.    else
  31.    {
  32.          return (fn % 80);
  33.    }
  34. }               
  35.    
  36. //计算五行:木1 火2 土3 金4 水5 
  37. int get_f(int fn)
  38. {
  39.    switch(fn % 10)
  40.    {
  41.              case 1:case 2:
  42.                   return 1;
  43.                   break;
  44.              case 3:case 4:
  45.                   return 2;
  46.                   break;
  47.              case 5:case 6:
  48.                   return 3;
  49.                   break;
  50.              case 7:case 8:
  51.                   return 4;
  52.                   break;
  53.              case 9:case 0:
  54.                   return 5;
  55.                   break;  
  56.              default:
  57.                   break;
  58.    }             
  59. }
  60. //计算天格,人格,地格五行相配值
  61. int get_good(int ft,int fr,int fd)
  62. {
  63.    return get_f(ft)*100 + get_f(fr)*10 + get_f(fd);
  64. }
  65. //计算人格,外格相配值
  66. int get_r_w(int fr,int fw)
  67. {
  68. return (fr % 10)*10 + (fw % 10);
  69. }
  70. //判断数理好坏
  71. bool is_fine(int fn)
  72. {
  73.   for(int i=0;i<43;i++)
  74.   {
  75.           if(fn==i_fine[i])
  76.           {
  77.               return true;
  78.           }
  79.   }                   
  80.   return false;  
  81. }
  82. //判断天人地相配好坏
  83. bool is_good(int fn)
  84. {
  85.   for(int i=0;i<25;i++)
  86.   {
  87.           if(fn==i_good[i])
  88.           {
  89.               return true;
  90.           }
  91.   }                   
  92.   return false;  
  93. //判断人格和外格相配好坏
  94. bool is_r_w(int fn)
  95. {
  96. for(int i=0;i<41;i++)
  97. {
  98. if(fn==i_r_w[i])
  99. {
  100. return true;
  101. }
  102. }
  103. return false;
  104. }
  105. //主体函数部分 
  106. int main()  
  107. {  
  108.    //首先输入姓的笔画数 
  109.    printf("请输入您的姓的笔画数(1-23):");
  110.    scanf("%d",&na);
  111.    printf("计算中,请等待...nn"); 
  112.    //打印输出表头 
  113.    printf("您的姓笔画是:%dn",na);
  114.    printf("下面是为您选出的可用的笔画组合n");
  115.    printf("-------------------------------------------n");
  116.    //用循环遍历名字   
  117.    for(nb=1;nb<=27;nb++)
  118.    {
  119.            for(nc=1;nc<=27;nc++)
  120.            {
  121.                 //由姓名笔画计算五格 
  122.                 f_t = na + 1;
  123.                 f_r = na + nb;
  124.                 f_d = nb + nc;              
  125.                 f_w = nc + 1;
  126.                 f_z = na + nb +nc;
  127.                 
  128.                 //判断人地总外四格数理好坏
  129.                 if(!is_fine(get_fine(f_r)) || !is_fine(get_fine(f_d)) || !is_fine(get_fine(f_z)) || !is_fine(get_fine(f_w)))
  130.                 {
  131.                     continue;
  132.                 }
  133. //判断人格和外格相配好坏
  134. if(!is_r_w(get_r_w(f_r,f_w)))
  135. {
  136. continue;
  137. }
  138.                 //继续判断天人地三格相配好坏
  139.                 if(is_good(get_good(f_t,f_r,f_d)))
  140.                 {                    
  141.                     printf("您的名第一个字笔画是:%dn",nb);
  142.                     printf("您的名第二个字笔画是:%dn",nc);
  143.                     printf("-------------------------------------------n");
  144.                     count++;
  145.                 }
  146.            }
  147.    }
  148.    printf("挑选程序运行完毕,总计有%d种选择n",count);
  149.    getch();
  150.    return 0;  
  151. }  
  152.