算法提高 9-3摩尔斯电码

问题描述

  摩尔斯电码破译。类似于乔林教材第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;
} 

猜你喜欢

转载自blog.csdn.net/g666m666d666/article/details/88741805
9-3
今日推荐