密码映射

#include <stdio.h>
#include <string.h>

char key_map (char input_char)
{
    char output = '0';
    switch (input_char)
    {
        case 'a':
        case 'b':
        case 'c':
            return output + 2;
        case 'd':
        case 'e':
        case 'f':
            return output + 3;
        case 'g':
        case 'h':
        case 'i':
            return output + 4;
        case 'j':
        case 'k':
        case 'l':
            return output + 5;
        case 'm':
        case 'n':
        case 'o':
            return output + 6;
        case 'p':
        case 'q':
        case 'r':
        case 's':            
            return output + 7;
        case 't':
        case 'u':
        case 'v':            
            return output + 8;                                         
        case 'w':
        case 'x':
        case 'y':
        case 'z':            
            return output + 9;             
        default:
            return -1;                  
    }
}

#define MAX_LEN   500
char input_char[MAX_LEN];
char output_char[MAX_LEN];

int passwd_map (char * input_char, char * output_char, int size)
{
    int i = 0;
    for (i = 0; i < size; i++)
    {
        if ((input_char[i] >= 'a') && (input_char[i] <= 'z'))
        {
            output_char[i] = key_map (input_char[i]);
        }
        else if ((input_char[i] >= 'A') && (input_char[i] <= 'Z'))
        {
            output_char[i] = input_char[i] + 32 + 1;
        }
        else if ((input_char[i] >= '0') && (input_char[i] <= '9'))
        {
            output_char[i] = input_char[i];
        }
        else
        {   
            memset (output_char, 0x0, MAX_LEN);
            break;    
        }
    }
}

int main()
{
    gets(input_char);
    passwd_map (input_char, output_char, strlen(input_char));
    printf ("%s", output_char);
}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值