题解 | #字符串加解密#

字符串加解密

https://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
char *encode(char *e, int len);
char *decode(char *d, int len);

int main() {
    char toEncode[1001];
    char toDecode[1001];
    scanf("%s", toEncode);
    scanf("%s", toDecode);
    int lenE = strlen(toEncode);
    int lenD = strlen(toDecode);
    char *encoded = (char *)malloc((lenE + 1) * sizeof(char));
    char *decoded = (char *)malloc((lenD + 1) * sizeof(char));
    strcpy(encoded, encode(toEncode, lenE));
    strcpy(decoded, decode(toDecode, lenD));
    printf("%s\n", encoded);
    printf("%s\n", decoded);
}

char *encode(char *e, int len) {
    for(int i = 0; i < len; i++) {
        if(e[i] == 'Z') e[i] = 'a';
        else if(e[i] == 'z') e[i] = 'A';
        else if(e[i] == '9') e[i] = '0';
        else if(isupper(e[i])) e[i] = tolower(e[i]) + 1;
        else if(islower(e[i])) e[i] = toupper(e[i]) + 1;
        else e[i]++;
    }
    return e;
}

char *decode(char *d, int len) {
    for(int i = 0; i < len; i++) {
        if(d[i] == 'a') d[i] = 'Z';
        else if (d[i] == 'A') d[i] = 'z';
        else if (d[i] == '0') d[i] = '9';
        else if (isupper(d[i])) d[i] = tolower(d[i]) - 1;
        else if (islower(d[i])) d[i] = toupper(d[i]) - 1;
        else d[i]--;
    }
    return d;
}

全部评论

相关推荐

每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务