HJ29 字符串加解密
描述
对输入的字符串进行加解密,并输出。
加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
解密方法为加密的逆过程。
数据范围:输入的两个字符串长度满足 1≤n≤1000 1≤n≤1000 ,保证输入的字符串都是只由大小写字母或者数字组成
输入描述:
第一行输入一串要加密的密码
第二行输入一串加过密的密码
输出描述:
第一行输出加密后的字符
第二行输出解密后的字符
示例1
输入:
abcdefg BCDEFGH
复制输出:
BCDEFGH abcdefg
#include <ios>
#include <iostream>
using namespace std;
string encryption(string str){
//加密
for(int i=0;i<str.size();i++){
if(str[i]>='a'&&str[i]<='z'){
if(str[i]=='z')str[i]='A';
else{
str[i]=str[i]-32+1;
}
}else if(str[i]>='A'&&str[i]<='Z'){
if(str[i]=='Z')str[i]='a';
else{
str[i]=str[i]+32+1;
}
}else if(str[i]>='0'&&str[i]<='9'){
if(str[i]=='9')str[i]='0';
else {
str[i]=(char)((int)str[i]+1);
}
}
}
return str;
}
string decode(string str){
for(int j=0;j<str.size();j++){
if(str[j]>='a'&&str[j]<='z'){
if(str[j]=='a')str[j]='Z';
else{
str[j]=str[j]-32-1;
}
}else if(str[j]>='A'&&str[j]<='Z'){
if(str[j]=='A')str[j]='z';
else{
str[j]=str[j]-1+32;
}
}else if(str[j]>='0'&&str[j]<='9'){
if(str[j]=='0')str[j]='9';
else{
str[j]=(char)((int)(str[j])-1);
}
}
}
return str;
}
int main() {
string str1;
string str2;
while(cin>>str1>>str2){
cout<<encryption(str1)<<endl;
cout<<decode(str2)<<endl;
}
return 0;
}
// 64 位输出请用 printf("%lld")