小程序-将输入的数字和字母转换为摩斯电码

本文介绍了一个使用C语言编写的简单程序,该程序能够将包含数字和小写字母的字符串转换成对应的摩斯电码。通过使用特定的字符数组来存储摩斯电码,并根据输入的字符类型(数字或字母)进行相应的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
int main()
{
    //存放数字摩斯电码,如数字0的摩斯电码为-----则将输出数组第10至14位
    char Number_Mcode[14] = {"----.....-----"};
    //存放字母摩斯电码,每一个字母对应的摩斯电码用空格键隔开,第几个空格键的后面存放的就是字母表里的第几个字母
    char Alphabet_Mcode[110] = {" .- -... -.-. -.. . ..-. --. .... .. .--- -.- .-.. -- -. --- .--. --.- .-. ... - ..- ...- .-- -..- -.-- --.. "};
    char To_be_translated[100] = {0};//存放输入的待转换的字符串
    printf("您可以输入一串由数字和小写字母组成的字符串,将会输出对应的摩斯电码\n");
    gets(To_be_translated);
    //循环的次数等于输入字符串的长度
    for(int i = 0;i<strlen(To_be_translated);i++)
    {
        if(To_be_translated[i]>='0'&&To_be_translated[i]<='9')//如果字符串第i位为数字
        {
            for(int j=5;j>0;j--)//数字的摩斯电码为五个电码符号故j=5
            {   //将输入的字符转换为对应数字后,获取对应摩斯电码
                printf("%c",Number_Mcode[14-(int)(To_be_translated[i]-'0')-j]);
                if (j == 1)printf(" ");
            }
        }
        else
        {   
            int space_number = 0;//代表字母电码数组里空格的序号
            for (int j = 0; j < 110; j++)//存放字母摩斯电码的数组里字符的数量为110
            {
                if (Alphabet_Mcode[j] == ' ')space_number++; //扫描到数组里的空格键时加1
                if (space_number == (int)(To_be_translated[i]-'a'+1))//空格键的序号和字母序号相等时执行
                {
                    int code_begin = j + 1;//每个电码的开头为空格键的下一个
                    while (Alphabet_Mcode[code_begin] != ' ')//未扫描到下一个空格键时输出扫描到的电码符号
                    {
                        printf("%c",Alphabet_Mcode[code_begin]);//输出对应的电码符号
                        code_begin++;//指向下一个符号
                        if(Alphabet_Mcode[code_begin] == ' ')
                        {  //当扫描到下一个空格键时输出一个空格键分隔开每个摩斯电码
                            printf(" ");
                            j = 110;//j = 110 结束对字母电码数组的扫描
                        }
                    }
                }
            } 
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值