蓝桥杯c语言试题 历届真题 天干地支【第十一届】【决赛】【A组】

/*天干地支

思路:题目告诉我们1900年是庚子年,为了方便后续计算,需算出天干甲年和地支子年的年份,因此1900年向前推,1894年天干位甲,而1900年地支已经为子了。

天干10年一个轮回,输入的年份n与1894年做对比,大于1894年直接用(n-1894)%10,便可得到天干。小于1894的用(10-(1894-n)%10),如果(1894-n)%10的结果为0的时候表示应该为甲年,所以此时需要在做一次if语句的判断。

地支同天干的想法,只是地支是12年一轮回。
*/

#include <stdio.h>
int q_tg(int ,char *);
int q_dz(int ,char *);

int main(void)
{
    char *tg[10]={"jia","yi","bing","ding","wu","ji","geng","xin","ren","gui"};
    char *dz[12]={"zi","chou","yin","mao","chen","si","wu","wei","shen","you","xu","hai"}; 
    int n;
    scanf("%d",&n);
    printf("%s%s\n",tg[q_tg(n,*tg)],dz[q_dz(n,*dz)]);
    return 0;
}

int q_dz(int n,char *dz)
{
    return (n<1900)?(((12-(1900-n)%12)==12)?(0):(12-(1900-n)%12)):((n-1900)%12);
    /*if(n<1900)
      {
         if((12-(1900-n)%12)==12)
         {
             return 0;
         }
         return  12-(1900-n)%12;
      }
      return (n-1900)%12;
    */
}

int q_tg(int n,char *tg)//1894-1234=660
{
    return (n<1894)?(((10-(1894-n)%10)==10)?(0):(10-(1894-n)%10)):((n-1894)%10);
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值