POJ1008 Maya Calendar

一、题目源程序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
    const char *Haab[19]={"pop","no","zip","zotz","tzec","xul","yoxkin","mol","chen","yax","zac","ceh","mac","kankin","muan","pax","koyab","cumhu","uayet"};
    const char *Tzolkin[20]={"imix","ik","akbal","kan","chicchan","cimi","manik","lamat","muluk","ok","chuen","eb","ben","ix","mem","cib","caban","eznab","canac",
                            "ahau"};
    int num;
    int hday,tday;
    int hmonth,tmonth;
    char hname[10],tname[10];
    int hyear,tyear;
    int i,j=0;
    long sum = 0;
    scanf("%d", &num);
    printf("%d\n",num);
    for(i = 0; i<num; i++)
    {
        scanf("%d.%s %d",&hday,&hname,&hyear);
        j=0;
        while(strcmp(hname,Haab[j]) !=0)
            j++;
        hmonth = j;

          sum = hyear * 365 + hmonth * 20 + hday+1;

          tyear = sum / 260;
          tmonth =sum%260;

         if((sum >=259) && ((sum%260) == 0))//此处应该特别注意,最后一天的处理,例如260 这天是0年而不是1年
         {

              tyear-=1;
         }

          if(tmonth % 20 == 0)//处理整除的情况下应该为最后一个数,而不是第一个数
          {
              tmonth = 19;
          }
          else
          {
              tmonth = tmonth%20-1;
          }

          tday = sum%260;
          if(tday % 13 == 0)
              tday =13;
          else
              tday %= 13;
          strcpy(tname,Tzolkin[tmonth]);
          printf("%d %s %d\n",tday,tname,tyear);
        }
    return 0;

}

二、解题思路

1.本题解题思路较为简单。主要是求出总天数。

2.注意一些细节问题

3.日期与对应名字的转换可以通过数组来实现!

三、心得体会

起初,日期与对应名字的转换,我是通过switch选择结构来做的,占用很大篇幅。之后才知道可以用数组做,简单很多,方便很多。

就是在这种不断积累中实现进步的!

转载于:https://www.cnblogs.com/fightfor/p/3850851.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值