gpt4 book ai didi

C - 加密算法

转载 作者:太空宇宙 更新时间:2023-11-04 02:13:39 28 4
gpt4 key购买 nike

我正在尝试用 C 编写一个简单的加密程序。我的目标是将 abc(它可以是任何单词)翻译成 123。然后乘以 2 得到 246 然后再次翻译成文本,然后在屏幕上写 bdf。这是我的算法,它不能正常工作。我输入了 abc,得到了 cbc。你能帮帮我吗?

int main()
{
int z,o,c,l,i,j,k,*D;
char word[10];
char alfabe[24]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','y','z','\0'};

printf("enter word");
scanf("%s",word);

c=strlen(word);
printf("has %d letters ", c);
D = (int *) malloc( sizeof(int)*c );
for(i=0;i<c;i++) {
for(j=0;j<26;j++) {
if(word[i]==alfabe[j]) {
D[i]=2*(j+1);
break;
}
}
}
printf("\nlast form before translation ");
for(l=0;l<c;l++) {
printf("%d",D[l]); /*it s just for control */

}

for(z=0;z<c;z++){
printf("%c",alfabe[o]);
o=D[z];
word[z]=alfabe[o] ; break; }




printf("\nnew form of word: ");
for(k=0;k<c;k++) {
printf("%c",word[k]);

}
scanf("%d");


}

最佳答案

问题出在下面的循环

for(z=0;z<c;z++){
printf("%c",alfabe[o]);
o=D[z];
word[z]=alfabe[o] ;
break;
}

你为什么分手?它只是翻译第一个字符。其次,您需要减去 1 以获得字母数组的正确索引(以重做您所做的加法)。

 word[z]=alfabe[o-1];

第三,你是在初始化之前使用o吗?您的编译器应该为此警告您。第四,为什么要在大小为 24 的 char 数组中存储 27 个字符?

char alfabe[24]={'a','b',...........,'\0'}

最后但同样重要的是,您需要使用模块化算法,如果用户输入类似 xyz 的内容,这将无法工作。

关于C - 加密算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10440238/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com