【问题标题】:Text to Morse code in CC语言中的文本到摩尔斯电码
【发布时间】:2018-06-08 08:57:46
【问题描述】:

我有一个函数可以将用户输入的文本(它也翻译数字)翻译成摩尔斯电码,但是我不明白为什么包含 摩尔斯 码中的字母的数组: m[37][10]是二维数组吗?我知道 37 是由字母、数字和空格组成的,一共是 37,但为什么是 10?

这是我的代码:

void textoMorse(){
    int i,j;
    char texto[37] = {
        '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', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ' '
     };
    char m[37][10]={
        {".-,"}, {"-...,"}, {"-.-.,"}, {"-..,"}, {".,"}, {"..-.,"},
        {"--.,"}, {"....,"}, {"..,"}, {".---,"}, {"-.-,"}, {".-..,"},
        {"--,"}, {"-.,"}, {"---,"}, {".--.,"}, {"--.-,"}, {".-.,"}, 
        {"...,"}, {"-,"}, {"..-,"}, {"...-,"}, {".--,"}, {"-..-,"},
        {"-.--,"}, {"--..,"}, {".----,"}, {"..---,"}, {"...--,"}, 
        {"....-,"}, {".....,"}, {"-....,"}, {"--...,"}, {"---..,"}, 
        {"---.,"}, {"-----,"}, {"//"}
    };
    char frase[1000];
    gets(frase);
    fflush(stdin);
    for(i=0; frase!='\0'; i++){
        for(j=0; j<37; j++){
            if(frase[i] == texto[j]){
                printf("%s",m[j]);
            }
        }
    }
}

【问题讨论】:

  • 这是因为摩尔斯电码符号长度超过 1 个字符。你需要为它们腾出一个空间,而 10 是摩尔斯电码最坏的情况。
  • 看在上帝的份上,请格式化您的代码
  • 旁白:我想知道为什么每个摩尔斯电码都需要一个终止逗号,而每个摩尔斯电码都包含一个终止 nul '\0'
  • 代码有一些问题:gets function is so dangerous已经过时了,fflush(stdin)non-standard,你的循环控制for(i=0; frase!='\0'; i++)应该是for(i=0; frase[i]!='\0'; i++)。跨度>

标签: c arrays multidimensional-array encoder


【解决方案1】:

m 是一个二维数组。把它想象成有 37 行,每行有 10 个字符。 C 字符串在每一行中编码,并由您看不到的 \0 字符隐式终止。例如,{".....,"} 行包含 5 个'.' 字符、1 个'.' 字符和一个'\0' 终止字符。该行中剩余的 3 个字节默认填充为 '\0' 字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2020-04-22
    • 2013-01-09
    相关资源
    最近更新 更多