问题描述
摩尔斯电码破译。类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文。请不要使用"zylib.h",只能使用标准库函数。用' * '表示' . ',中间空格用' | '表示,只转化字符表。
摩尔斯码定义见:http://baike.baidu.com/view/84585.htm?fromId=253988。
提示
清橙进行评测时,输入是以EOF结尾的,而不是换行符。(EOF不是一个字符,“以EOF结尾”是一种通俗但不严谨的说法。)因此可以通过以下方式之一获取输入:
1. 一次读入整行字符串,再进行后续解析。
2. 使用getchar或scanf一次读入一个字符,通过它们的返回值判断输入结束。
样例输出
#include<stdio.h>
char str[2222];
int main()
{
//设‘*’是1,‘-’是2;
str[12]='a',str[2111]='b',str[2121]='c',str[211]='d';
str[1]='e',str[1121]='f',str[221]='g',str[1111]='h';
str[11]='i',str[1222]='j',str[212]='k',str[1211]='l';
str[22]='m',str[21]='n',str[222]='o',str[1221]='p';
str[2212]='q',str[121]='r',str[111]='s',str[2]='t';
str[112]='u',str[1112]='v',str[122]='w',str[2112]='x';
str[2122]='y',str[2211]='z';
char ch;
int sum=0;
while((scanf("%c",&ch))!=EOF){
if(ch=='*'){
sum=sum*10+1;
}else if(ch=='-'){
sum=sum*10+2;
}else if(ch=='|'){
printf("%c",str[sum]);
sum=0;
}
}
printf("%c",str[sum]);
return 0;
}