蓝桥杯摩尔斯电码

来源:互联网 发布:上海通用维修编程系统 编辑:程序博客网 时间:2024/05/01 02:40

问题描述

  摩尔斯电码破译。类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文。请不要使用”zylib.h”,只能使用标准库函数。用’ * ‘表示’ . ‘,中间空格用’ | ‘表示,只转化字符表。
  摩尔斯码定义见:http://baike.baidu.com/view/84585.htm?fromId=253988。

提示

  清橙进行评测时,输入是以EOF结尾的,而不是换行符。(EOF不是一个字符,“以EOF结尾”是一种通俗但不严谨的说法。)因此可以通过以下方式之一获取输入:

  1. 一次读入整行字符串,再进行后续解析。

  2. 使用getchar或scanf一次读入一个字符,通过它们的返回值判断输入结束。
样例输出

思路

将字符串以 ‘|’ 为间隔拆分成多个子串,再进行匹配

代码

#include<stdio.h>#include<string.h>int main(){    char A[4]="*-",B[4]="-***",C[4]="-*-*",D[4]="-**",         E[4]="*", F[4]="**-*",G[4]="--*" ,H[4]="****",         I[4]="**",J[4]="*---",K[4]="-.-",L[4]="*-**",         M[4]="--",N[4]="-*",  O[4]="---",P[4]="*--*",         Q[4]="--*-",R[4]="*-*",S[4]="***",T[4]="-",         U[4]="**-",V[4]="***-",W[4]="*--",X[4]="-**-",         Y[4]="-*--",Z[4]="--**";    char str[1000];    int i;    gets(str);    for(i=0;i<strlen(str);i++){        int j=0;        char subStr[4];        while(str[i]!='|'&&str[i]!='\0'){            subStr[j++]=str[i++];        }        subStr[j]='\0';        if(strcmp(subStr,A)==0) printf("a");        if(strcmp(subStr,B)==0) printf("b");        if(strcmp(subStr,C)==0) printf("c");        if(strcmp(subStr,D)==0) printf("d");        if(strcmp(subStr,E)==0) printf("e");        if(strcmp(subStr,F)==0) printf("f");        if(strcmp(subStr,G)==0) printf("g");        if(strcmp(subStr,H)==0) printf("h");        if(strcmp(subStr,I)==0) printf("i");        if(strcmp(subStr,J)==0) printf("j");        if(strcmp(subStr,K)==0) printf("k");        if(strcmp(subStr,L)==0) printf("l");        if(strcmp(subStr,M)==0) printf("m");        if(strcmp(subStr,N)==0) printf("n");        if(strcmp(subStr,O)==0) printf("o");        if(strcmp(subStr,P)==0) printf("p");        if(strcmp(subStr,Q)==0) printf("q");        if(strcmp(subStr,R)==0) printf("r");        if(strcmp(subStr,S)==0) printf("s");        if(strcmp(subStr,T)==0) printf("t");        if(strcmp(subStr,U)==0) printf("u");        if(strcmp(subStr,V)==0) printf("v");        if(strcmp(subStr,W)==0) printf("w");        if(strcmp(subStr,X)==0) printf("x");        if(strcmp(subStr,Y)==0) printf("y");        if(strcmp(subStr,Z)==0) printf("z");    }    return 0;} 
原创粉丝点击