看到的一个摩斯密码的问题

 

在无意中看到了这个标题为(求救,我已经快想爆了)的文章, 
文章在下面:(满经典),希望大家讨论如何解这个摩斯密码. 
文章: 
最近和一个心仪的女生告白, 
谁知道她给了一个摩斯密码给我,说解出来了才答应和我约会。 
可是我用尽了所有方法都解不开这个密码。。好郁闷阿。只能求教你们了。 
****-/*----/----*/****-/****-/*----/---**/*----/****-/*----/-****/***--/****-/*----/----*/**---/-****/**---/**---/***--/--***/****-/ 
她唯一给我的提示就是这个是5层加密的密码.. 
也就是说要破解5层密码才是答案.. 
好郁闷阿.. 
救救我吧.. 
他还提示:她还说过最终语言是英语。 

 

 

 

 

 

 

首先要把摩斯密码给解开来. 
应该是. 
4194418141634192622374. 
你们看解码出来分组后的数字分别是, 
41 94 41 81 41 63 41 92 62 23 74 
并且每个组合个位数都不超过4。 
特别是除了十位数是7和9这两个数字后面有4以外其他的都没有4。 
看图。 


手机的键盘上7和9的字母也是4个的,其他的都不超过4个字母。 
那么,按照上面的组合解码可得。 
G Z G T G O G X N C S 
解码后我们发现每一组数字都能解释出来。 
目前我只能解码到这里的。 
虽然很不通顺,但我相信这里应该是个突破点。 
93楼的键盘代入也给了我很大的提示。 


包括楼主的“她说途中有一个步骤是"替代密码"而密码表则是我们人类每天都可能用到的东西”
那么很可能就是电脑键盘。 
因为QWE的格式是被世人所认可的,也就有可能成为密码的码表。 
码表 QWE=ABC依次类推。 
那么解码G Z G T G O G X N C S 
就是G=O Z=T G=O T=E G=O O=I G=O X=U N=Y C=V S=L 
翻译过来就是 O T O E O I O U Y V L 
其实到这里就已经大概知道答案是什么了。 
按照逻辑来整理,只要你重组这些字母的时候你就看到了。 
虽然重组有很多种例如,LV IOU ET OOO 
可是这些没有语言性质。因为楼主说过最终答案是英语。 
所以唯一一个符合逻辑的答案应该是I LOVE YOU TOO. 
可是我还不确定。 
因为这里我才解了第3层就已经看出答案了。 
所以我决定用O T O E O I O U Y V L 
进行再次解码。 
我用了很多种解码方法。 
凯撒,乘法等等。。 
最后我发现了只有栅栏才能读得通。 
分成两排 
O T O E O I 
O U Y V L 
重组后,OOTUOYEVOLI。 
然后倒序,ILOVEYOUTOO. 
I LOVE YOU TOO.就自然而然的出来了。 
最后我才肯定密码就是I LOVE YOU TOO. 
最后的最后,我敢肯定楼主有一个非触摸屏的手机,并且键盘一定是标准格式的。 
而且应该有一台笔记本或者你经常接触电脑。 
另外楼主和楼主的女人关系应该是认识很久的那种,而不是一见钟情。 
而且楼主告白的时候应该有用到I LOVE YOU 或者我爱你之类的字眼。 
对不对阿? 
呼~~~~~~~~··. 
好累啊.. 
祝楼主幸福咯. 
因为她是爱你的!!

 

 

 

 

 

 

 

 

摩斯密码如下:

A• — 
B— • • •
C— • — •
D— • •
E•
F• • — •
G— — •
H• • • •
I• •
J• — — — —
K— • —
L• — • •
M— —
N— •
O— — —
P• — — •
Q— — • —
R• — •
S• • •
T—
U• • —
V• • • —
W• — —
X— • • —
Y— • — —
Z— — • •
1• — — — —
2• • — — —
3• • • — —
4• • • • —
5• • • • •
6— — • • — —
7— — • • •
8— — — • •
9— — — — •
0— — — — —
,— — • • — —
(— • — — •
)— • — — • —

 

转载于:https://www.cnblogs.com/wozijisun/p/5087953.html

### 回答1: 以下是用C语言实现摩尔斯密码转换器的示例代码: ``` #include <stdio.h> #include <string.h> void convertToMorse(char ch); int main() { char message[100]; int i; printf("请输入要转换的文本:\n"); fgets(message, 100, stdin); for (i = 0; i < strlen(message); i++) { convertToMorse(message[i]); } return 0; } void convertToMorse(char ch) { switch (ch) { case 'a': case 'A': printf(".- "); break; case 'b': case 'B': printf("-... "); break; case 'c': case 'C': printf("-.-. "); break; case 'd': case 'D': printf("-.. "); break; case 'e': case 'E': printf(". "); break; case 'f': case 'F': printf("..-. "); break; case 'g': case 'G': printf("--. "); break; case 'h': case 'H': printf(".... "); break; case 'i': case 'I': printf(".. "); break; case 'j': case 'J': printf(".--- "); break; case 'k': case 'K': printf("-.- "); break; case 'l': case 'L': printf(".-.. "); break; case 'm': case 'M': printf("-- "); break; case 'n': case 'N': printf("-. "); break; case 'o': case 'O': printf("--- "); break; case 'p': case 'P': printf(".--. "); break; case 'q': case 'Q': printf("--.- "); break; case 'r': case 'R': printf(".-. "); break; case 's': case 'S': printf("... "); break; case 't': case 'T': printf("- "); break; case 'u': case 'U': printf("..- "); break; case 'v': case 'V': printf("...- "); break; case 'w': case 'W': printf(".-- "); break; case 'x': case 'X': printf("-..- "); break; case 'y': case 'Y': printf("-.-- "); break; case 'z': case 'Z': printf("--.. "); break; case ' ': printf(" "); break; default: break; } } ``` 这个程序可以将用户输入的文本转换成摩尔斯电码,并在控制台中输出。用户可以输入任意长度的文本,程序会自动将其转换成摩尔斯电码。 ### 回答2: 摩斯密码是一种将字母、数字和标点符号转换为点(.)和线(-)的密码系统。要用C语言编写一个摩斯密码转换器,我们可以采取以下步骤: 1. 首先,我们需要定义一个摩斯密码表,其中包含字母、数字和标点符号与其对应的摩斯密码。 2. 接下来,用户将输入要转换的字符串,可以是字母、数字和标点符号的组合。 3. 我们使用循环来遍历输入的字符串。对于每个字符,我们需要找到其对应的摩斯密码,并打印或输出到屏幕上。 4. 我们可以使用switch语句来检查字符,并在找到对应的摩斯密码后输出。 5. 输出的摩斯密码可以用点(.)和线(-)表示,我们可以使用printf函数来打印这些字符。 6. 最后,我们可以加入一些用户友好的功能,如提示用户输入要转换的字符串,并在输出摩斯密码后询问用户是否继续转换。 下面是一个简单的C语言代码示例,用于将摩斯密码转换为字符串: ```c #include <stdio.h> #include <string.h> void convertToMorseCode(char character) { switch(character) { case 'A': case 'a': printf(".- "); break; case 'B': case 'b': printf("-... "); break; // 其他字母和符号的转换 default: printf(" "); break; } } int main() { char input[100]; int i; printf("请输入要转换的字符串:"); fgets(input, 100, stdin); for(i = 0; i < strlen(input); i++) { convertToMorseCode(input[i]); } return 0; } ``` 这只是一个简单的示例,只包括了几个字母的转换。你可以在`convertToMorseCode`函数中补充完整的摩斯密码表,并在switch语句中处理其他字符。同时,你还可以根据需要进行扩展和优化。 ### 回答3: 摩斯密码是一种将字母、数字、标点符号等转换成一系列短信号和长信号的编码方式,通过不同长度的信号来区分不同字符。下面是一个用C语言编写的摩斯密码转换器的示例代码: ```c #include <stdio.h> #include <string.h> void convertToMorse(char *string) { int i, j; char *morseAlphabet[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."}; char *morseNumber[] = {"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----."}; char *morseSymbol[] = {".-.-.-", "--..--", "..--..", "-.-.--", "-..-.", "-.--.", "-.--.-", ".-...", "---...", "-.-.-.", "-...-", ".-.-.", "-....-", "..--.-", ".-..-.", ".--.-."}; for (i = 0; i < strlen(string); i++) { if (string[i] >= 'A' && string[i] <= 'Z') { j = string[i] - 'A'; printf("%s ", morseAlphabet[j]); } else if (string[i] >= 'a' && string[i] <= 'z') { j = string[i] - 'a'; printf("%s ", morseAlphabet[j]); } else if (string[i] >= '0' && string[i] <= '9') { j = string[i] - '0'; printf("%s ", morseNumber[j]); } else if (string[i] == ' ') { printf(" / "); } else { for (j = 0; j < sizeof(morseSymbol) / sizeof(morseSymbol[0]); j++) { if (string[i] == morseSymbol[j][0]) { printf("%s ", morseSymbol[j]); break; } } } } printf("\n"); } int main() { char inputString[100]; printf("请输入要转换成摩斯密码的字符串:"); fgets(inputString, sizeof(inputString), stdin); inputString[strlen(inputString) - 1] = '\0'; // 去掉换行符 printf("转换后的摩斯密码为:"); convertToMorse(inputString); return 0; } ``` 这个摩斯密码转换器使用了3个字符数组`morseAlphabet`、`morseNumber`和`morseSymbol`来存储对应的摩斯密码编码。在`convertToMorse`函数中,通过遍历输入的字符串,根据字符的不同范围,找到对应的摩斯密码编码,并打印输出到控制台。在`main`函数中,首先接收用户输入的字符串,然后调用`convertToMorse`函数来进行转换,并输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值