1044 Digital Mars, C

Summary explanations directory

#include <stdio.h>

int main()
{
	int ziti=0,n=0,useless,i=0,x=0,gw=0,dw=0;      //ziti=1是数字,ziti=0是火星文
	char a[10]={0};
	char d[14][5]={"tret","jan","feb","mar","apr","may","jun","jly", "aug", "sep", "oct", "nov","dec"};
	char g[13][4]={"tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok","mer","jou"};
    
	scanf("%d\n",&n);

    while(n--)
	{
		i=0;x=0;
		while(i<8)	{a[i]=0;i++;}	//初始化a[10]
		scanf("%[^\n]",a);
		scanf("%c",&useless);		//useless是帮助输入用
		
		if(a[0]>96)	ziti=0;
		else	ziti=1;

		i=0;
		if(ziti)	//数字
		{
			while(a[i])	i++;		//判断数字有几位,储存于i中
			if(i==3)
				x = (a[0]-'0')*100 + (a[1]-'0')*10 + (a[2]-'0');
			else if(i==2)
				x = (a[0]-'0')*10 + (a[1]-'0');
			else if(i==1)
				x = (a[0]-'0');		//x是转化后的数字
			gw = x/13;
			dw = x%13;
			if(gw && dw)	printf("%s %s\n",g[gw-1],d[dw]);
			if(gw && !dw)	printf("%s\n",g[gw-1]);
            if(!gw && dw)   printf("%s\n",d[dw]);
            if(!gw && !dw)  printf("%s\n",d[0]);
		}
		else	//火星文
		{
			if(a[5])	i++;  //4,5,6都行,如果存在,说明是两位数
			if(i)	//两位数
			{
				i=0;
				while(i<12)
				{
					if( a[0]==g[i][0] && a[1]==g[i][1] && a[2]==g[i][2] )
					{
						x = (i+1)*13;	break;
					}
					i++;
				}
				i=0;
				while(i<13)
				{
					if( a[4]==d[i][0] && a[5]==d[i][1] && a[6]==d[i][2] )
					{
						x += i;	break;
					}
					i++;
				}
				printf("%d\n",x);
			}
			else	//一位数
			{
				while(i<13)
				{
					if( a[0]==d[i][0] && a[1]==d[i][1] && a[2]==d[i][2] )
					{
						x = i;	break;
					}
					i++;
				}
				i=0;
				while(i<12)
				{
					if( a[0]==g[i][0] && a[1]==g[i][1] && a[2]==g[i][2] )
					{
						x = (i+1)*13;	break;
					}
					i++;
				}
				printf("%d\n",x);
			}
		}
	}

	//system("pause");
	return 0;
}
Published 44 original articles · won praise 0 · Views 868

Guess you like

Origin blog.csdn.net/weixin_43916400/article/details/104585390