过程来啦
2023-05-14 20:51:25
发布于:广东
23阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
char m[1005],k[105],ans[1005];//数组
int lenm,lenk,j;//一开始把这三个变量一块在上一行声明,导致输出不够长。。
bool jud(char x)//判断大小写
{ return (x>='a'&&x<='z')? true : false;
}
int main()
{ gets(k);//读入
gets(m);
lenm=strlen(m);
lenk=strlen(k);
for(int i=0,j=0;i<lenm;i++,j++)//j变量负责控制密匙数组k的下标
{ if(j>=lenk)j=0;//循环使用密匙
if(jud(m[i]))
{ if(!jud(k[j]))k[j]+='a'-'A';//将k[j]的大写字母转换成小写,因为下面直接利用k[j]进行解码
ans[i]=m[i]-(k[j]-'a');//从m[i]的字母向前(k[j]-'a'位)
if(ans[i]<'a')ans[i]+=26;//对超出范围的进行处理
}
else
{ if(jud(k[j]))k[j]-='a'-'A';//将k[j]的小写字母转换成大写
ans[i]=m[i]-(k[j]-'A');//从m[i]的字母向前(k[j]-'a'位)
if(ans[i]<'A')ans[i]+=26;//对超出范围的进行处理
}
}
cout<<ans;//输出答案
return 0;
}
这里空空如也
有帮助,赞一个