高中化学溶解度表:请教C语言

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/30 03:00:49
读取一篇英文文章存入到字符串数组xx中;请编制函数Decode()对这篇文章按行进行加密,加密算法是这样的:假设原文的一行是字符串S1,加密后成为密文字符串S2,系统定义了一个密钥key(key>1),这样进行加密:先从S2的第一个字符计数,当数到第key个字符时,把S1的第一个字符放在S2的这个位置;然后接着从S2的下一个字符计数,当再次数到第key个字符时,把S1的第二个字符放在S2的这个位置……,以此类推;当S2的计数位置超出了字符串的长度时,就回到S2的起始位置向后计数(实际上是把S2当成一个圆环);直到S1中的所有字符都存入S2中,然后把加密后的每一行都按原顺序仍存放在数组xx中

main()
{
int i,j=0,flag=1,k,str1,n=0;
char a[20][80]={"DECODING"},b[20][80]={'\0'};
for(i=0;i<20;i++)
{
str1=strlen(a[i]);
while(flag==1)
for(k=0;k<3;k++)
{if(j==str1-3)
j=0;
else if(j==str1-2)
j=1;

if(a[i][j]==a[i][str1-1])flag=0;
else if(k==2)
b[i][n++]=a[i][j];
if(k!=3)
j++;

}
}
}

程序错在那里呢?
向高手请教?

我来说一下我的思路哈:
#include<stdio.h>
#define KEY 3
char * decode(char a[]){
int i,j=-1;
int len=strlen(a);
char *b;
b=(char *)malloc(len*sizeof(char));
for(i=0;i<len;i++){
j=(KEY+j)%len;
b[j]=a[i];
}
b[i]='\0';
return b;
}
void main(){
char a[]="12345";
char *b;
b=decode(a);
printf("%s",b);
}
不知道,我是否正确的理解了你的意思及符合你的要求,有什么问题,可以与我联系.
QQ:316508111

不懂呢????