编制程序,将输入的一行字符以加密的形式输出, 然后将其解密,解密的字符序列与输入的正文进行比较, 吻合时输出解密的正文, 否则输出解密失败。
加密时,将每个字符的 ASCII码依次反复加上“4962873”中的数字,并在32(' ')~122('z') 之间做模运算。解密与加密的顺序相反。例如,对于输入正文“the result of 3 and 2 is not 8”, 则运行结果为:
xqk口zlvyuzqn口6$jtf(9#m! &pw #
the result of 3 and 2 is not 8

//----------------------------------- //EX0305.cpp //加密与解密 //----------------------------------- #include<iostream> #include<string> using namespace std; //----------------------------------- const char key[]="4962873"; //----------------------------------- string encode(string& str){ string result(str); for(int i=0; i<str.length(); i++){ result[i] += key[i%7]-'0'; if(result[i]>'z') result[i] -= 91; //'z'-' '+1=122-32+1=91; } return result; }//---------------------------------- string double(string& str){ string result(str); for(int i=0; i<str.length(); i++){ result[i] -= key[i%7]-'0'; if(result[i]>' ') result[i] += 91; //'z'-' '+1=122-32+1=91; } return result; }//---------------------------------- int main(){ string s; getline(cin, s); string t = encode(s) cout<<t<<"\n"; cout<<(s==decode(t) ? s+"\n" : string("decode failed\n")); }//----------------------------------