火星人是以 13 进制计数的:
例如地球人的数字 29
翻译成火星文就是 hel mar
;而火星文 elo nov
对应地球数字 115
。为了方便交流,请你编写程序实现地球和火星数字之间的互译。
输入第一行给出一个正整数 N(<),随后 N 行,每行给出一个 [0, 169) 区间内的数字 —— 或者是地球文,或者是火星文。
对应输入的每一行,在一行中输出翻译后的另一种语言的数字。
4
29
5
elo nov
tam
hel mar
may
115
13
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <ctype.h> 5 6 int main(){ 7 char s[15][9]={"tret","jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", 8 "sep", "oct", "nov", "dec"}; 9 char s2[15][9]={"cuowu","tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", 10 "syy", "lok", "mer", "jou"}; 11 int n,i; 12 scanf("%d",&n); 13 getchar(); 14 for(i=0;i<n;i++){ 15 int num=0; 16 int k=0; 17 char s3[4]={}; 18 char s4[4]={}; 19 char c=0; 20 while((c=getchar())!=‘ ‘ && c!=‘\n‘){ 21 s3[k]=c;k++; 22 } 23 if(c==‘ ‘){ 24 scanf("%s",s4); 25 getchar(); 26 num++; 27 } 28 if(isdigit(s3[0])){ 29 int a=atoi(s3); 30 if(a>12){ 31 if(a%13==0) 32 printf("%s\n",s2[a/13]); 33 else 34 printf("%s %s\n",s2[a/13],s[a%13]); 35 }else{ 36 printf("%s\n",s[a%13]); 37 } 38 }else{ //字符串转数字 39 if(num==1){ 40 int sum=0; 41 for(int j=0;j<=12;j++){ 42 if(strcmp(s3,s2[j])==0) 43 sum = 13*j; 44 } 45 for(int j=0;j<=12;j++){ 46 if(strcmp(s4,s[j])==0) 47 printf("%d\n",sum+j); 48 } 49 }else{ 50 for(int j=0;j<=12;j++){ 51 if(strcmp(s3,s[j])==0) 52 printf("%d\n",j); 53 } 54 for(int j=0;j<=12;j++){ 55 if(strcmp(s3,s2[j])==0) 56 printf("%d\n",j*13); 57 } 58 } 59 60 } 61 62 } 63 return 0; 64 }
原文:https://www.cnblogs.com/geyang/p/12334047.html