莫尔斯码

也许最著名的编码机制是莫尔斯码,是1832年由Samuel Morse创立的,用于电报系统使用。莫尔斯码对字母、数字和一些特殊符号(如圆点、逗号、分号)指定一系列点和线。在面向声音的系统中,点表示短音,线表示长音。点线表示还用于面向光的系统和面向信号标志系统。 单词之间用空格分开,没有点和线。在面向声音的系统中,空格表示为短时间不发声音。下图显示了莫尔斯码的国际化版本。 编写一个程序,读取英语短语,并将其编制成莫尔斯码。莫尔斯码编码字母之间用一个*,莫尔斯码编码单词之间用三个***间隔。

Input
Output

Sample Input

I LOVE CHINA

Sample Output

..***.-..*---*...-*.***-.-.*....*..*-.*.-

#include<iostream>
#include<cstring>
#include<stdio.h>
using namespace std;
int main()
{
 int i,len;
    char s[100];
 gets(s);
 len=strlen(s);
 for(i=0;i<len;i++)
   
  switch(s[i])
       
  case 'A':  cout<<".-";break;
  case 'B':  cout<<"-...";break; 
  case 'C':  cout<<"-.-.";break;
  case 'D':  cout<<"-..";break;
  case 'E':  cout<<".";break; 
  case 'F':  cout<<"..-.";break;
  case 'G':  cout<<"--.";break; 
  case 'H':  cout<<"....";break;   
  case 'I':  cout<<"..";break;
  case 'J':  cout<<".---";break; 
  case 'K':  cout<<"-.-";break;
  case 'L':  cout<<".-..";break;
  case 'M':  cout<<"--";break;  
  case 'N':  cout<<"-.";break; 
  case 'O':  cout<<"---";break;  
  case 'P':  cout<<".--.";break;
  case 'Q':  cout<<"--.-";break; 
  case 'R':  cout<<".-.";break; 
  case 'S':  cout<<"...";break; 
  case 'T':  cout<<"-";break;
  case 'U':  cout<<"..-";break; 
  case 'V':  cout<<"...-";break; 
  case 'W':  cout<<".--";break; 
  case 'X':  cout<<"-..-";break; 
  case 'Y':  cout<<"-.--";break;
  case 'Z':  cout<<"--..";break; 
  case '1':  cout<<".----";break;
  case '2':  cout<<"..---";break; 
  case '3':  cout<<"...--";break; 
  case '4':  cout<<"....-";break;
  case '5':  cout<<".....";break; 
  case '6':  cout<<"-....";break; 
  case '7':  cout<<"--...";break; 
  case '8':  cout<<"---..";break; 
  case '9':  cout<<"----.";break; 
  case '0':  cout<<"-----";break;
  }
  if((s[i]>='A'&&s[i]<='Z')&&s[i+1]==' ') 
   cout<<"***";
  else   if((s[i]>='A'&&s[i]<='Z')&&(s[i+1]>='A'&&s[i+1]<='Z'))
   cout<<"*";
 }
 cout<<endl;
 return 0; 
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值