PAT-B 1044. 火星数字
来源:互联网 发布:教师远程网络培训 编辑:程序博客网 时间:2024/05/16 01:07
火星人是以13进制计数的:
地球人的0被火星人称为tret。
地球人数字1到12的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec。
- 火星人将进位以后的12个高位数字分别称为:tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou。
例如地球人的数字“29”翻译成火星文就是“hel mar”;而火星文“elo nov”对应地球数字“115”。为了方便交流,请你编写程序实现地球和火星数字之间的互译。
输入格式:
输入第一行给出一个正整数N(<100),随后N行,每行给出一个[0, 169)区间内的数字 —— 或者是地球文,或者是火星文。
输出格式:
对应输入的每一行,在一行中输出翻译后的另一种语言的数字。
输入样例:
4295elo novtam
输出样例:
hel marmay11513
注意:如果数字是13的倍数,输出火星数字时,末位的0不打印。
(老实说,这道题我的代码相当差劲,值得注意的是strstr函数和strcmp函数的使用)
程序代码:
#include<stdio.h>#include<string.h>char c_0[][5]={"tret","jan","feb","mar","apr","may","jun", "jly", "aug", "sep", "oct", "nov", "dec"};char c_1[][4]={"\0","tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"};char in[10][10]={0};char ans[10]={0};void num_to_char(int n,char* ans);void print_mars(char* ans[]);int main(){ int n,i=0; int tmp; scanf("%d",&n); getchar(); while(i<n) { gets(in[i]); i++; } for(i=0;i<n;i++) { memset(ans,0,10); if(isNum(in[i])) { tmp = GetNum(in[i]); num_to_char(tmp,ans); printf("%s\n",ans); } else { tmp = mars_to_earth(in[i]); printf("%d\n",tmp); } } return 0;}int mars_to_earth(char* in){ int i=0,sum=0; for(i=1;i<13;i++) { if(strstr(in,c_1[i])) { sum = i*13; break; } } for(i=0;i<13;i++) { if(strstr(in,c_0[i])) { sum = sum + i; break; } } return sum;}void num_to_char(int n,char* ans){ char *p; int i=0; if(n>=13) { p = c_1[n/13]; while(*p!='\0') { ans[i] = *p; i++; p++; } if(n%13!=0) { ans[i] = ' '; i++; p = c_0[n%13]; while(*p!='\0') { ans[i] = *p; i++; p++; } ans[i]= '\0'; } else { ans[i] = '\0'; } } else { p = c_0[n%13]; while(*p!='\0') { ans[i] = *p; i++; p++; } ans[i] = '\0'; } }int GetNum(char* s){ int num=0; char *p =s; while(*p!='\0') { num = num*10 + *p - '0'; p++; } return num;}int isNum(char *s){ if(s[0]>='0'&&s[0]<='9') return 1; else return 0;}
0 0
- PAT-B 1044. 火星数字
- PAT-B 1044. 火星数字
- PAT 1044.火星数字
- pat 1044. 火星数字
- 【PAT】1044. 火星数字(20)
- [PAT-乙级]1044.火星数字
- 1044. 火星数字(20) PAT
- PAT (Basic Level)1044. 火星数字
- C++ - PAT - 1044. 火星数字(20)
- PAT 乙级 1044. 火星数字(20)
- PAT BASIC LEVEL 1044. 火星数字(20)
- 1044. 火星数字(20)-PAT乙级
- PAT 乙级 1044. 火星数字(20)
- PAT乙级 1044. 火星数字(20)
- PAT乙级 1044. 火星数字(20)
- [PAT乙级]1044. 火星数字(20)
- PAT乙级1044. 火星数字(20)
- pat 乙级 1044. 火星数字(20)
- H5学习小结——div+css创建电子商务静态网页
- Retrofit 2中@Path 和@Query的区别
- 初识reactJS的组件化开发(一):简单封装
- U-BOOT-1.1.6-note-文件结构分析注释
- POJ 2553——The Bottom of a Graph(强连通分量)
- PAT-B 1044. 火星数字
- Java设计模式之单例模式
- 脉搏信号检测与处理系统
- 算法的时间复杂度
- PHP5.4及PHP5.5关于htmlspecialchars输出为空的问题
- 第5课:零基础实战Scala函数式编程及Spark源码解析
- java-基础-接口和抽象类
- app个人资料—头像测试
- Remote-Hotfix