参考代码:


#include<stdio.h>

#include<string.h>


/*

解密

1.一个大写字母(原文)对应一个大写字母(密文)

2.给你一个原文和一个密文,要求你找出全部的加密关系

*/


void Func_2856(char *a,char *b,char *c)

{

     //这个数组用来保存加密关系.默认按字母表顺序

     char arr2[26]= {0};

     //这个数组用来存储每个字母出现次数

     char num[26] = {0};


    int len = strlen(a);

     //如果给的原文小于26,那肯定找不全

     if(len < 26)

     {

         printf("Failed");

         return ;

     }

    

     //按照原文和密文一个个存储加密关系

     for(int i=0;i<len;i++)

     {

         //哪个字母

         int x = *a - 'A';

        

         //将加密字母存入数组

         //如果加密关系变了那肯定不行

         if(arr2[x] != 0 && arr2[x] != *b)

         {

             printf("Failed");

             return ;

         }

         else

         {

             arr2[x] = *b;

         }

        

             num[x]++;

             a++;

             b++;

     }

    

     //有字母没出现肯定不行

     for(int i=0;i<26;i++)

     {

         if(num[i] == 0)

         {

             printf("Failed");

             return ;

         }

     }



     //最后对c解密

     int len_2 = strlen(c);

    

     char arr1[len_2+1] = {0};

    

     for(int i=0;i<len_2;i++)

     {

         int Y = *c - 'A';

         arr1[i] = arr2[Y];

         c++;

     }

    

         arr1[len_2] =0;

         printf("%s\n",arr1);

}


int main()

{

     char str1[100];

     char str2[100];

     char str3[100];

    

     scanf("%s%s%s",str1,str2,str3);

    

     Func_2856(str1,str2,str3);

     return 0;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论