//题目描述
//1、对输入的字符串进行加解密,并输出。
//2、加密方法为:
//当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
//当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
//其他字符不做变化。
//3、解密方法为加密的逆过程。
//
//接口描述:
// 实现接口,每个接口实现1个基本操作:
//void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出
//说明:
//1、字符串以\0结尾。
//2、字符串最长100个字符。
//
//int unEncrypt (char result[], char password[]):在该函数中实现字符串解密并输出
//说明:
//1、字符串以\0结尾。
//2、字符串最长100个字符。
//
//知识点 字符串
//运行时间限制 10M
//内存限制 128
//输入
//输入说明
//输入一串要加密的密码
//输入一串加过密的密码
//输出
//输出说明
//输出加密后的字符
//输出解密后的字符
//样例输入 abcdefg BCDEFGH
//样例输出 BCDEFGH abcdefg
#include<iostream>
#include <string>
using namespace std;
string Encrypt(string s)
{
if(s.empty())
return s;
//处理后的目标字符串
int len = s.length();
string dstS ="";
for(int a=0;a<len;a++)
{
if('A'<=s[a]&&s[a]<='Z')
{
if(s[a]=='Z')
{
dstS+='a';
}
else
{
dstS+=s[a]+33;
}
}
else if('a'<=s[a]&&s[a]<='z')
{
if(s[a]=='z')
{
dstS+='A';
}
else
{
dstS+=s[a]-31;
}
}
else if('0'<=s[a]&&s[a]<='9')
{
if(s[a]=='9')
{
dstS+='0';
}
else
{
dstS+=s[a]+1;
}
}
else dstS+=s[a];
}
return dstS;
}
string unEncrypt(string s)
{
if(s.empty())
return s;
//处理后的目标字符串
int len = s.length();
string dstS ="";
for(int a=0;a<len;a++)
{
if('A'<=s[a]&&s[a]<='Z')
{
if(s[a]=='A')
{
dstS+='z';
}
else
{
dstS+=s[a]+31;
}
}
else if('a'<=s[a]&&s[a]<='z')
{
if(s[a]=='a')
{
dstS+='Z';
}
else
{
dstS+=s[a]-33;
}
}
else if('0'<=s[a]&&s[a]<='9')
{
if(s[a]=='0')
{
dstS+='9';
}
else
{
dstS+=s[a]-1;
}
}
else dstS+=s[a];
}
return dstS;
}
int main()
{
string s1,s2,s3,s4;
getline(cin,s1);
s2 = Encrypt(s1);
cout<<s2<<endl;
getline(cin,s3);
s4 = unEncrypt(s3);
cout<<s4<<endl;
return 0;
}
【OJ练习】字符加密解密
最新推荐文章于 2023-11-09 09:18:01 发布