PTA乙级题 1044. 火星数字(20)

【题目链接】


个人感觉不难,但是我写的超级超级麻烦。

#include<stdio.h>
#include<string.h>
#include<math.h>
void jiang(int n);
int main(void)
{
    int n;
    scanf("%d ",&n);
    int i,b,c=0,j,l;
    char a[n][8];
    int sh,ch;
    for(i=0;i!=n;i++)
    {
        for(j=0;j!=8;j++)
        a[i][j]=0;
    }
    for(i=0;i!=n;i++)
    {
        c=0,l=0,sh=0,ch=0;
        gets(a[i]);
        if(a[i][0]>=48&&a[i][0]<=57)
        {
            b=strlen(a[i]);
            for(j=0;j!=b;j++)
            {
                c=c+(a[i][j]-48)*(int)pow(10,b-j-1);
            }
            jiang(c);
        }
        else
        {
            if(strlen(a[i])==3)
            {
                for(j=0;j!=3;j++)
                l=l+a[i][j];
                switch(l)
                {
                    case 313:
                    {
                        if(a[i][0]=='j')
                        printf("1");
                        else
                        printf("26");
                    };break;
                    case 301:printf("2");break;
                    case 320:
                    {
                        if(a[i][0]=='m')
                        printf("3");
                        else
                        printf("104");
                    };break;
                    case 323:
                    {
                        if(a[i][0]=='a')
                        printf("4");
                        else
                        printf("78");
                    };break;
                    case 327:printf("5");break;
                    case 333:printf("6");break;
                    case 335:printf("7");break;
                    case 317:printf("8");break;
                    case 328:printf("9");break;
                    case 326:
                    {
                        if(a[i][0]=='o')
                        printf("10");
                        else
                        printf("130");
                    };break;
                    case 339:printf("11");break;
                    case 300:printf("12");break;

                    case 322:printf("13");break;
                    case 303:printf("39");break;
                    case 325:printf("52");break;
                    case 344:printf("65");break;
                    case 310:printf("91");break;
                    case 357:printf("117");break;
                    case 324:printf("143");break;
                    case 334:printf("156");break;
                }
                printf("\n");
            }
            else if(strlen(a[i])==4)
            printf("0\n");
            else
            {
                int k=0;
                for(j=0;j!=3;j++)
                ch=ch+a[i][j];
                for(j=4;j!=7;j++)
                sh=sh+a[i][j];
                switch(ch)
                {
                    case 322:c=c+13*1;break;
                    case 313:c=c+13*2;break;
                    case 303:c=c+13*3;break;
                    case 325:c=c+13*4;break;
                    case 344:c=c+13*5;break;
                    case 323:c=c+13*6;break;
                    case 310:c=c+13*7;break;
                    case 320:c=c+13*8;break;
                    case 357:c=c+13*9;break;
                    case 326:c=c+13*10;break;
                    case 324:c=c+13*11;break;
                    case 334:c=c+13*12;break;
                }
                switch(sh)
                {
                    case 313:c=c+1;break;
                    case 301:c=c+2;break;
                    case 320:c=c+3;break;
                    case 323:c=c+4;break;
                    case 327:c=c+5;break;
                    case 333:c=c+6;break;
                    case 335:c=c+7;break;
                    case 317:c=c+8;break;
                    case 328:c=c+9;break;
                    case 326:c=c+10;break;
                    case 339:c=c+11;break;
                    case 300:c=c+12;break;
                }
                printf("%d\n",c);
            }
        }
    }
    return 0;
}
void jiang(int n)
{
    if(n/13==0)
    {
        switch(n)
        {
            case 0:printf("tret");break;
            case 1:printf("jan");break;
            case 2:printf("feb");break;
            case 3:printf("mar");break;
            case 4:printf("apr");break;
            case 5:printf("may");break;
            case 6:printf("jun");break;
            case 7:printf("jly");break;
            case 8:printf("aug");break;
            case 9:printf("sep");break;
            case 10:printf("oct");break;
            case 11:printf("nov");break;
            case 12:printf("dec");break;
        }
        printf("\n");
    }
    else if(n==0)
    printf("tret\n");
    else if((n/13!=0)&&(n%13==0))
    {
        switch(n)
        {
            case 13:printf("tam");break;
            case 26:printf("hel");break;
            case 39:printf("maa");break;
            case 52:printf("huh");break;
            case 65:printf("tou");break;
            case 78:printf("kes");break;
            case 91:printf("hei");break;
            case 104:printf("elo");break;
            case 117:printf("syy");break;
            case 130:printf("lok");break;
            case 143:printf("mer");break;
            case 156:printf("jou");break;
        }
        printf("\n");
    }
    else
    {
        int a,i,b;
        a=n/13;
        b=n%13;
        switch(a)
        {
            case 1:printf("tam");break;
            case 2:printf("hel");break;
            case 3:printf("maa");break;
            case 4:printf("huh");break;
            case 5:printf("tou");break;
            case 6:printf("kes");break;
            case 7:printf("hei");break;
            case 8:printf("elo");break;
            case 9:printf("syy");break;
            case 10:printf("lok");break;
            case 11:printf("mer");break;
            case 12:printf("jou");break;
        }
        printf(" ");
        switch(b)
        {
            case 0:printf("tret");break;
            case 1:printf("jan");break;
            case 2:printf("feb");break;
            case 3:printf("mar");break;
            case 4:printf("apr");break;
            case 5:printf("may");break;
            case 6:printf("jun");break;
            case 7:printf("jly");break;
            case 8:printf("aug");break;
            case 9:printf("sep");break;
            case 10:printf("oct");break;
            case 11:printf("nov");break;
            case 12:printf("dec");break;
        }
        printf("\n");
    }
}