【来源】
《OpenJudge 1.7 字符串基础全解(1-20)》
网址:https://www.codetd.com/article/4120656
【题目】
在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,其他非字母字符不变,则可得到一个简单的加密字符串。
输入:
输入一行,包含一个字符串,长度小于80个字符。
输出:
输出每行字符串的加密字符串。
样例输入:
Hello! How are you!
样例输出:
Ifmmp! Ipx bsf zpv!
【分析】
恺撒密码(英语:Caesar cipher)
历史上,有斯巴达人的密码棒,凯撒大帝的密码盘。
公元前404年,一位遍体鳞伤的信差来到斯巴达将领利桑德面前,这趟波斯之旅只有他和四位同伴幸存,利桑德接下腰带,缠绕到他的密码棒上,得知波斯的发那巴祖斯准备侵袭他,多亏密码棒利桑德才能够预先防范,击退敌军。
参考:https://www.jianshu.com/p/647300d9938a
参考:https://juejin.cn/post/6955456556259508261
参考:http://www.posterus.sk/?p=14100
【代码】
#include<iostream> #include<cstring> #include<string> #include<stdio.h> using namespace std; main () { char a[85]; gets(a); int len = strlen(a); for(int i = 0; i < len; i++) { if(a[i] == 'z') { a[i] = 'a'; } else if(a[i] == 'Z') { a[i] = 'A'; } else if( a[i] <= 'y' && a[i] >= 'a' ) a[i] = a[i] + 1; else if (a[i] <= 'Y' && a[i] >= 'A') a[i] = a[i] + 1; else a[i] = a[i]; } cout << a; }