题解 | #字符串加密#

字符串加密

http://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3

#include<stdio.h> #include<string.h> int main() { char key[101];//定义一个key while(gets(key)!=NULL) {

    char scours[101];//要加密的字符串
    gets(scours);
    
    char key1[27];
    char alpha[27];
    char temp[27];
    char new[101];
    int lengthkey=strlen(key),lengthscours=strlen(scours);
    int m=0;
    for(int i=0;i<lengthkey;i++)//给关键字key去重
    {
        for(int j=i+1;j<lengthkey;j++)
        {
            if(key[i]==key[j])
            {
                for(int k=j;k<lengthkey-1;k++)
                {
                    key[k]=key[k+1];
                }
                lengthkey--;
                j--;
            }
        }
    }
    for(int i=0;i<lengthkey;i++)//把去重之后的关键字赋值给key1,这样key1的长度正好是去重之后有效的key的长度
    {
        key1[i]=key[i];
    }
    //puts(key1);
    for(char i='a';i<='z';i++)//给字母表赋值,a-z
    {
        alpha[m]=i;
        m++;
    }
    //printf("%d",m);//m=26
    //puts(alpha);
    for(int i=0;i<m;i++)
    {
        temp[i]=alpha[i];
    }
    for(int i=0;i<lengthkey;i++)//在临时temp中找到与key中相同的字母并删除
    {
        for(int j=0;j<m;j++)
        {
            if(key1[i]==temp[j])
            {
                for(int k=j;k<m-1;k++)
                {
                    temp[k]=temp[k+1];
                }
                m--;
                j--;
            }
        }
    }
    //printf("%d",m);//m=19
    //puts(temp);
    for(int i=0;i<m;i++)//把删除后的temp连接到key1后面,这样key1就是排好的字符串
    {
        key1[lengthkey+i]=temp[i];
    }
    //puts(key1);
    int n=0;
    for(int i=0;i<lengthscours;i++)//在字母表alpha中找到要加密的字符串
    {
        for(int j=0;j<26;j++)
        {
            if(scours[i]==alpha[j])
            {
                new[n]=key1[j];//找到之后输出和字母表元素位置相同的key1的字符,给到new
                n++;
            }
        }
    }
    for(int i=0;i<lengthscours;i++)//输出new中的字符
    {
        printf("%c",new[i]);
    }
    printf("\n");
}
return 0;

}

全部评论

相关推荐

和蔼:在竞争中脱颖而出,厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务