【来源】
《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;
}