输入一个全英文的字符串,输出加密后的字符串。
文字信息在传递之前希望先加密。加密的含义是将每个字符转变为另一个字符,加密规则是:
为26个英文字母规定一个序号,a,b,c,d,…,z依次编号为1,2,3,4,…,26.
字符串中每个英文字符的序号加上字符串的长度再加上该字符在字符串中的位置(从0开始计数),得到新字符的序号。如果新序号大于26,则求余得到1-26之间的序号,该字符就转换为新序号对应字符。
大小写都遵从此规则。
例如:要加密的字符串是:AbxY,则长度为4,A转换为E,b转换为g,x转换为d,Y转换为F。
#include<stdio.h>
int main()
{
int j,n,i;
int a=0;
char str[80],ch[80],tran[80];
printf("Input a word:");
gets(str);
j=0;
while(str[j]!='\0')
{ a++;
ch[j]=str[j];
j++;
}
n=j;
for(j=0;j<n;j++)
{ if((ch[j]>='A')&&(ch[j]<='Z')&&(ch[j]-64+a+j>27))
ch[j]=(ch[j]-64+a+j)%26+64;
else if((ch[j]>='a')&&(ch[j]<='z')&&(ch[j]-96+a+j>27))
ch[j]=(ch[j]-96+a+j)%26+96;
else
ch[j]=ch[j]+a+j;
}
printf("The encoded word is ");
for(j=0;j<n;j++)
putchar(ch[j]);
printf("\n");
return 0;
}