编写程序实现morse code编码与解码C语言
时间: 2024-05-03 12:21:29 浏览: 239
以下是一个简单的C语言程序,可以实现摩尔斯电码的编码和解码:
```c
#include <stdio.h>
#include <string.h>
// 摩尔斯电码表
const char* morse_code[] = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..",
"--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-",
"-.--", "--..", "-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...",
"---..", "----."
};
// 字符串转换为摩尔斯电码
void encode(char* str) {
for (int i = 0; i < strlen(str); i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
printf("%s ", morse_code[str[i] - 'a']);
} else if (str[i] >= 'A' && str[i] <= 'Z') {
printf("%s ", morse_code[str[i] - 'A']);
} else if (str[i] >= '0' && str[i] <= '9') {
printf("%s ", morse_code[str[i] - '0' + 26]);
} else if (str[i] == ' ') {
printf("/ ");
}
}
printf("\n");
}
// 摩尔斯电码转换为字符串
void decode(char* str) {
char* token = strtok(str, " ");
while (token != NULL) {
if (strcmp(token, "/") == 0) {
printf(" ");
} else {
for (int i = 0; i < 36; i++) {
if (strcmp(token, morse_code[i]) == 0) {
if (i < 26) {
printf("%c", i + 'a');
} else {
printf("%c", i - 26 + '0');
}
break;
}
}
}
token = strtok(NULL, " ");
}
printf("\n");
}
int main() {
char input[100];
printf("请输入要编码的字符串:\n");
fgets(input, sizeof(input), stdin);
printf("摩尔斯电码为:\n");
encode(input);
printf("请输入要解码的摩尔斯电码:\n");
fgets(input, sizeof(input), stdin);
printf("解码后的字符串为:\n");
decode(input);
return 0;
}
```
使用方法:
1. 运行程序后,输入要编码的字符串,按回车键确认。
2. 程序会输出字符串的摩尔斯电码。
3. 输入要解码的摩尔斯电码,按回车键确认。
4. 程序会输出解码后的字符串。
注意事项:
1. 输入的字符串长度不能超过100个字符。
2. 输入的字符串只能包含英文、数字和空格。
3. 摩尔斯电码中,点号(.)用`.`表示,短横线(-)用`-`表示,单词之间用`/`表示。
阅读全文