我需要一块二向箔,清理用(模拟)
2019-03-17 17:27
459 查看
题目描述
摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。为了简单问题,去除所有的标点符号。 现在给你一段摩斯密码,请你把它们进行解密。
输入
含有T(T<=20)组数据,每组数据包含一段摩斯密码(由字符 '.' 和 '-' 以及 空格组成连续空格个数不超过两个),每段占一行(不超过1000个字符),现在请你对他们进行解密;
输出
输出对应的解密后的结果(所有解密结果如果是英文字母一律输出小写英文字母),保证结果仅包含 数字 空格 字母。
例:
输入:
5
..
. .
. ..
. ..
.. .-.. --- ...- . -.-- --- ..-
输出:
i
ee
ei
e i
i love you
代码:
[code]#include<stdio.h> #include<string.h> typedef struct data{ char ch[10]; char letter; }data;//将不明字符和它所代表的字母或数字联系起来 data s[40];//共有26个字母和10个数字 int main() { strcpy(s[1].ch ,".-");s[1].letter ='a'; strcpy(s[2].ch ,"-...");s[2].letter ='b'; strcpy(s[3].ch ,"-.-.");s[3].letter ='c'; strcpy(s[4].ch ,"-..");s[4].letter ='d'; strcpy(s[5].ch ,".");s[5].letter ='e'; strcpy(s[6].ch ,"..-.");s[6].letter ='f'; strcpy(s[7].ch ,"--.");s[7].letter ='g'; strcpy(s[8].ch ,"....");s[8].letter ='h'; strcpy(s[9].ch ,"..");s[9].letter ='i'; strcpy(s[10].ch ,".---");s[10].letter ='j'; strcpy(s[11].ch ,"-.-");s[11].letter ='k'; strcpy(s[12].ch ,".-..");s[12].letter ='l'; strcpy(s[13].ch ,"--");s[13].letter ='m'; strcpy(s[14].ch ,"-.");s[14].letter ='n'; strcpy(s[15].ch ,"---");s[15].letter ='o'; strcpy(s[16].ch ,".--.");s[16].letter ='p'; strcpy(s[17].ch ,"--.-");s[17].letter ='q'; strcpy(s[18].ch ,".-.");s[18].letter ='r'; strcpy(s[19].ch ,"...");s[19].letter ='s'; strcpy(s[20].ch ,"-");s[20].letter ='t'; strcpy(s[21].ch ,"..-");s[21].letter ='u'; strcpy(s[22].ch ,"...-");s[22].letter ='v'; strcpy(s[23].ch ,".--");s[23].letter ='w'; strcpy(s[24].ch ,"-..-");s[24].letter ='x'; strcpy(s[25].ch ,"-.--");s[25].letter ='y'; strcpy(s[26].ch ,"--..");s[26].letter ='z'; strcpy(s[27].ch ,"-----");s[27].letter ='0'; strcpy(s[28].ch ,".----");s[28].letter ='1'; strcpy(s[29].ch ,"..---");s[29].letter ='2'; strcpy(s[30].ch ,"...--");s[30].letter ='3'; strcpy(s[31].ch ,"....-");s[31].letter ='4'; strcpy(s[32].ch ,".....");s[32].letter ='5'; strcpy(s[33].ch ,"-....");s[33].letter ='6'; strcpy(s[34].ch ,"--...");s[34].letter ='7'; strcpy(s[35].ch ,"---..");s[35].letter ='8'; strcpy(s[36].ch ,"----.");s[36].letter ='9'; int t; scanf("%d",&t);//如果数万数字后需输入字符,要加上getchar getchar(); while(t--) { char str[1006],str1[1006]; gets(str); memset(str1,0,sizeof(str1));//初始化 int x=-1; int begin=0,end=0;//下标 char cc[10]; int l=strlen(str); for(int i=0;i<l;i++) { if(i==0)begin=0; if(str[i]!=' ')end=i; if(str[i]==' '||end==l-1) { if(str[i]==' ')end=i-1; memset(cc,0,sizeof(cc)); strncpy(cc,str+begin,end-begin+1);//截取字符串存入新的字符串中 int j; for(j=1;j<=36;j++) { if(strcmp(s[j].ch ,cc)==0) { str1[++x]=s[j].letter ; break; } } begin=end+2; memset(cc,0,sizeof(cc));//初始化为0 if(str[i+1]== ' ') { str1[++x]=' '; i=i+1; begin=begin+1; } } } printf("%s",str1); if(t!=0) { printf("\n"); } } return 0; } //对你
相关文章推荐
- Win7安装之后需要做哪些清理工作从哪开始
- 一块金条切成两半,是需要花费和长度数值一样的铜板的。比如长度为20的 金条,不管切成长度多大的两半,都要花费20个铜板。一群人想整分整块金 条,怎么分最省铜板。
- 需要在Emulator上模拟来电 效果
- Windows监听日志文件过大,需要清理,设置log_status off报错TNS-12508
- 用Python模拟网站中对JavaScript加密需要的两种方法
- 线性表的长度为10,在最坏情况下,冒泡排序需要比较次数为()----腾讯2016研发工程师在线模拟笔试题
- 模拟IE登录一个需要(windows身份)验证的网站
- foxmail邮件太多,需要经常手工清理邮件怎么办
- 牛腩新闻发布系统——你的IE内存需要清理
- 模拟登录QQ判断是否需要验证码
- PostgresQL数据库的参数需要KeepAlive和防火墙清理检查的时间
- 最符合这个时代的读书方式,每天只需要一块钱
- 基于TClientSocket简单模拟需要验证的SMTP邮件发送附件(C++Builder)
- VPS在C盘满后需要清理log
- Linux内核中编写一个模块,实现申请一块内存,需要考虑哪些方面?
- 使用 Find 命令来帮你找到那些需要清理的文件
- 使用 Find 命令来帮你找到那些需要清理的文件
- 清理linux swap内存,需要root权限
- 模拟下载文件还需要多久的测试demo
- 模拟在原来系统功能中需要引进新功能的适配器模式