我正在做一些密码学的基础练习;在一个练习中,我想创建两个数组,第一个数组包含从a到z的字母表,第二个数组给予用户选择自己的键字母表,我发现的问题是,例如,当我创建以下字母表时:波伊特雷扎姆山
所以,我要求用户组成一个句子。我的目标是当用户组成一个句子时,字母应该转换成他已经组成的关键字母表。例如:形成的句子:abyz根据您的密钥字母表加密的短语是:poxw我的问题是当我输入一个句子;变换总是从密钥字母表的第一个字母开始:“poi..."。也就是说,关键字母表中的字母并不完全占据原始字母表的位置。下面是我的代码:
#include<stdio.h>
#include<string.h>
void main() {
char T[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char T1[26]={};
int i;
printf("We have the alphabet:\n");
puts(T);
printf("Enter your key alphabet:");
gets(T1);
printf("Your alphabet key is: ");
puts(T1);
printf("Form a phrase: ");
gets(T);
for(i=0;i<strlen(T);i++){
T[i]=T1[i];
}
printf("The encrypted phrase according to your key alphabet is: ");
puts(T);
}
1条答案
按热度按时间z9smfwbn1#
伙计们,我经过长时间的研究找到了答案!所以我添加了另一个数组'userinput[]'和一个变量j。当我在'userinput'[]'中构造短语时,我使用了条件if so,而这个条件等于'alphabet[]',字母取值为'cipherkey[]',同时保护列的位置。我还用'if'条件向i添加了'for'函数。然后用'休息。
我的最终代码(我试图写一个干净的代码):