描述
对输入的字符串进行加解密,并输出。
加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母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 digLetter[26]={A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z};
//string smallLetter[26]={a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z};
//int num[10]={0,1,2,3,4,5,6,7,8,9};
string encrypted_code(string code){string password="";for(int i=0;i<code.size();i++){//英文字母用该英文后一个字母替换//字母变换大小写,大写变成小写,小写变成大些//ascii大写在前,小写在后,差32,加一等于33if(code[i]>='a'&&code[i]<='z'){if(code[i]=='z'){//a且变成大写password[i]=code[i]-25-32;}else{//其他的都是往后一位,变换大小写password[i]=code[i]-32+1;}}else if(code[i]>='A'&&code[i]<='Z'){if(code[i]=='Z'){password[i]=code[i]+32-25;}elsepassword[i]=code[i]+32+1;}else if(code[i]>=0&&code[i]<=9){if(code[i]==0){password[i]=9;}else{password[i]=code[i]-1;}}//内容为数字,数字加1,其他字符不做变换}return password;
}
string decode( string code){string passwordPre="";for(int i=0;i<code.size();i++){
//内容为数字,减1if(code[i]>=0&&code[i]<=9){if(code[i]==0){passwordPre[i]=9;}else{passwordPre[i]=code[i]-1;}}else if(code[i]>='a'&&code[i]<='z'){if(code[i]=='a'){passwordPre[i]='Z';}else{passwordPre[i]=code[i]-32-1;}}else if(code[i]>='A'&&code[i]<='Z'){if(code[i]=='A'){passwordPre[i]='z';}else{passwordPre[i]=code[i]+32+1;}}//内容为字母,大写变成小写,小写变成大写,字母往前一位,a==Z,B=a}return passwordPre;
}int main() {string encryptedCode;string deCode;while(cin>>encryptedCode>>deCode){cout<<encrypted_code(encryptedCode)<<endl;cout<<decode(deCode)<<endl;}
}
// 64 位输出请用 printf("%lld")
关于ascii码 的进制转换。按照下面的表格进行相应的加减操作:
#include <iostream>using namespace std;int main()
{char a[20];int i = 0;cout<<"请输入一串字符:\n";cin>>a;for(;a[i];i++){if(a[i] >= 'a'&&a[i] <= 'z')a[i] -= 32;else if(a[i] >= 'A'&&a[i] <= 'Z')a[i] += 32;}for(i = 0;a[i];i++)cout<<a[i];cout<<endl;system("pause");return 0;
}