密码翻译

2022年8月21日 | 分类: 【编程】

【来源】

《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;
}