#include<stdio.h>//P1079
#include<string.h>
int flag;
char key[1000],word[1000];
int main()
{
gets(key);
gets(word);
flag=0;
int i=0;
while(word[i]!='\0'){
int temp;
if(key[flag]>='A'&&key[flag]<='Z')
temp=key[flag]-'A';
if(key[flag]>='a'&&key[flag]<='z')
temp=key[flag]-'a';
// printf("%d\n",temp);测试
if(word[i]>='a'&&word[i]<='z'){
if(word[i]-temp>='a'&&word[i]-temp<='z')
word[i]-=temp;
if(word[i]-temp<'a')
word[i]-=temp-26;
}
if(word[i]>='A'&&word[i]<='Z'){
if(word[i]-temp>='A'&&word[i]-temp<='Z')
word[i]-=temp;
if(word[i]-temp<'A')
word[i]-=temp-26;
}
flag++;
if(key[flag]=='\0')
flag=0;
i++;
}
printf("%s\n",word);
return 0;
}
思路:
将密钥转化为每次应该减去的数字
分开判断密文大小写情况
如果减的超了就加回去
最后输出