C语言写一个破译摩斯密码的代码
时间: 2024-09-18 22:01:03 浏览: 37
破译摩斯代码
摩尔斯密码是一种早期的电报通信编码方式,通过长短音符组合表示字母和数字。以下是一个简单的C语言程序,用于解码基本的摩斯密码。这个程序假设输入的是单个字符的摩尔斯密码。
```c
#include <stdio.h>
#include <string.h>
// 摩尔斯密码对应表
const char* morse_code = ".... . .. ... / - .... .---- ..--- ...-- ./ -... --- ..-- ...- ..-. -.. ... / .----.- ..--- ...-- .---- ..--- ...-- .---- ..--- ...--";
char decode_morse(char morse[]) {
int i, j;
for (i = 0; morse[i] != '\0'; i += 3) { // 一个摩斯码由三个字符组成(例如".-")
for (j = 0; j <= 26; ++j) {
if (morse[i] == morse_code[j * 3]) {
break;
}
}
if (j <= 26) {
printf("%c", 'A' + (j - 1)); // 如果找到对应字母,则输出该字母
} else if (j == 27) {
// 处理数字
if (morse[i + 1] == '.') {
printf("1");
} else if (morse[i + 1] == '-') {
printf("0");
}
} else if (j == 28) { // 处理特殊符号
switch (morse[i]) {
case '/':
printf("/");
break;
case '-':
printf("-");
break;
default:
printf("?"); // 对于未知的字符显示问号
}
}
}
return '\0';
}
int main() {
char input[100];
printf("Enter a Morse code message: ");
fgets(input, sizeof(input), stdin); // 读取一行输入
input[strlen(input) - 1] = '\0'; // 去除换行符
char decoded_message[strlen(input)];
strcpy(decoded_message, "");
decoded_message = decode_morse(input);
printf("Decoded message: %s\n", decoded_message);
return 0;
}
```
阅读全文