A : 摩斯密码

 

题目描述

题目描述:

 

摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。为了简单问题,去除所有的标点符号。

 

现在给你一段摩斯密码,请你把它们进行解密

 

 

 

 

 

输入

含有T(T<=20)组数据,每组数据包含一段摩斯密码(由字符 '.' '-' 以及 空格组成,连续空格个数不超过两个),每段占一行(不超过1000个字符),现在请你对他们进行解密;

 

输出

输出对应的解密后的结果(所有解密结果如果是英文字母一律输出小写英文字母),保证结果仅包含 数字 空格 字母。

 

样例输入

复制

5

..

. .

. ..

.  ..

..  .-.. --- ...- .  -.-- --- ..-

样例输出

复制

i

ee

ei

e i

i love you

题意描述:

根据密码表,输出结果。

解题思路:

根据不同字符进行判断解密。(写的比较水,应该还有更简洁的)

程序代码:

#include<stdio.h>

#include<string.h>

char zimu1(char a)

{

    if(a=='.')

        return 'e';

    if(a=='-')

        return 't';

}

char zimu2(char a,char b)

{

    if(a=='.'&&b=='-')

        return 'a';

    if(a=='.'&&b=='.')

        return 'i';

    if(a=='-'&&b=='-')

        return 'm';

    if(a=='-'&&b=='.')

        return 'n';

}

char zimu3(char a,char b,char c)

{

    if(a=='.'&&b=='.'&&c=='-')

        return 'u';

    if(a=='-'&&b=='.'&&c=='.')

        return 'd';

    if(a=='-'&&b=='-'&&c=='.')

        return 'g';

    if(a=='-'&&b=='.'&&c=='-')

        return 'k';

    if(a=='-'&&b=='-'&&c=='-')

        return 'o';

    if(a=='.'&&b=='-'&&c=='.')

        return 'r';

    if(a=='.'&&b=='.'&&c=='.')

        return 's';

    if(a=='.'&&b=='-'&&c=='-')

        return 'w';

}

char zimu4(char a,char b,char c,char d)

{

    if(a=='-'&&b=='-'&&c=='.'&&d=='-')

        return 'q';

    if(a=='-'&&b=='.'&&c=='-'&&d=='-')

        return 'y';

    if(a=='-'&&b=='.'&&c=='.'&&d=='.')

        return 'b';

    if(a=='-'&&b=='.'&&c=='-'&&d=='.')

        return 'c';

    if(a=='.'&&b=='.'&&c=='-'&&d=='.')

        return 'f';

    if(a=='.'&&b=='.'&&c=='.'&&d=='.')

        return 'h';

    if(a=='.'&&b=='-'&&c=='-'&&d=='-')

        return 'j';

    if(a=='.'&&b=='-'&&c=='.'&&d=='.')

        return 'l';

    if(a=='.'&&b=='-'&&c=='-'&&d=='.')

        return 'p';

    if(a=='.'&&b=='.'&&c=='.'&&d=='-')

        return 'v';

    if(a=='-'&&b=='.'&&c=='.'&&d=='-')

        return 'x';

    if(a=='-'&&b=='-'&&c=='.'&&d=='.')

        return 'z';

}

int zimu5(char a,char b,char c,char d,char e)

{

    if(a=='-'&&b=='-'&&c=='-'&&d=='-'&&e=='-')

        return '0';

    if(a=='.'&&b=='-'&&c=='-'&&d=='-'&&e=='-')

        return '1';

    if(a=='.'&&b=='.'&&c=='-'&&d=='-'&&e=='-')

        return '2';

    if(a=='.'&&b=='.'&&c=='.'&&d=='-'&&e=='-')

        return '3';

    if(a=='.'&&b=='.'&&c=='.'&&d=='.'&&e=='-')

        return '4';

    if(a=='.'&&b=='.'&&c=='.'&&d=='.'&&e=='.')

        return '5';

    if(a=='-'&&b=='.'&&c=='.'&&d=='.'&&e=='.')

        return '6';

    if(a=='-'&&b=='-'&&c=='.'&&d=='.'&&e=='.')

        return '7';

    if(a=='-'&&b=='-'&&c=='-'&&d=='.'&&e=='.')

        return '8';

    if(a=='-'&&b=='-'&&c=='-'&&d=='-'&&e=='.')

        return '9';

}

char a[1100];

int main()

{

    int t,i,len;

    scanf("%d\n",&t);

    while(t--)

    {

        gets(a);

        len=strlen(a);

        for(i=0;i<=len;i++)//判断不同情况下的解密结果

        {

            if((i-1==-1||a[i-1]==' ')&&a[i]!=' '&&a[i]!='\0'&&a[i+1]!=' '&&a[i+1]!='\0'&&(a[i+2]==' '||a[i+2]=='\0'))


                printf("%c",zimu2(a[i],a[i+1]));

             else if((i-1==-1||a[i-1]==' ')&&a[i]!=' '&&a[i]!='\0'&&(a[i+1]==' '||a[i+1]=='\0'))

                printf("%c",zimu1(a[i]));

           else if((i-1==-1||a[i-1]==' ')&&a[i]!=' '&&a[i]!='\0'&&a[i+1]!=' '&&a[i+1]!='\0'&&a[i+2]!=' '&&a[i+2]!='\0'&&(a[i+3]==' '||a[i+3]=='\0'))

                printf("%c",zimu3(a[i],a[i+1],a[i+2]));

           else if((i-1==-1||a[i-1]==' ')&&a[i]!=' '&&a[i]!='\0'&&a[i+1]!=' '&&a[i+1]!='\0'&&a[i+2]!=' '&&a[i+2]!='\0'&&a[i+3]!=' '&&a[i+3]!='\0'&&(a[i+4]==' '||a[i+4]=='\0'))

                printf("%c",zimu4(a[i],a[i+1],a[i+2],a[i+3]));

           else if((i-1==-1||a[i-1]==' ')&&a[i]!=' '&&a[i]!='\0'&&a[i+1]!=' '&&a[i+1]!='\0'&&a[i+2]!=' '&&a[i+2]!='\0'&&a[i+3]!=' '&&a[i+3]!='\0'&&a[i+4]!=' '&&a[i+4]!='\0'&&(a[i+5]==' '||a[i+5]=='\0'))

                printf("%c",zimu5(a[i],a[i+1],a[i+2],a[i+3],a[i+4]));

            else if(a[i]==' '&&a[i+1]==' ')

                printf(" ");

            else

                continue;

        }

        printf("\n");

    }

    return 0;

}