凯撒密码 ))
️♂️ 编程题2凯撒密码大破解一、 故事背景在“字母王国”里国王用一种古老的加密方式凯撒密码坏人发来了一段密文我们要破解它二、 什么是凯撒密码 每个字母往后移动几位1、 举例如果“偏移量 3”A → D B → E C → F ... X → A绕回去2、 任务1你会得到1️⃣ 一段已知的明文原文2️⃣ 一段已知的密文加密后2 用来找规律3️⃣ 一段未知密文3 需要你破解三、 解题思路1、 第一步找出“偏移量”1 故事1️⃣ 特工发现明文A 密文D2️⃣ 说明D - A 33️⃣ 偏移量 32 代码实现int d s1[0] - s2[0];⚠️ 注意方向问题我们最后会统一处理 2、 第二步处理负数问题1 故事1️⃣如果出现A → Z 差值可能是负数2️⃣所以要“修正”d (d % 26 26) % 26; 保证在 025 之间2、 第三步破解新密文1 故事我们拿到一段密文 每个字母都要“往回走 d 步”2 公式int ch (s3[i] - A d) % 26; 再变回字母(char)(ch A)四、 参考程序#include iostream using namespace std; int main() { string s1, s2, s3; cin s1 s2 s3; // 求偏移量 int d s1[0] - s2[0]; // 修正为 0~25 d (d % 26 26) % 26; // 破解 for(int i 0; i s3.length(); i) { int ch (s3[i] - A d) % 26; cout (char)(ch A); } return 0; }五、 实例说明1、输入明文ABCDEFG 密文DEFGHIJ 未知WKH2、 第一步求偏移量A → D 偏移量 33、 第二步破解1WW → T2KK → H3HH → E4、 最终结果THE六、 图像理解字母表 A B C D E F G ... X Y Z ↑ ↑ 往前3步七、⚠️ 本题考点 1. 字母 → 数字s[i] - A A0, B1, C2 2. 数字 → 字母ch A 3. 取模% 26 保证不会超出 A~Z八、 考点总结 找规律 → 算偏移 字母转数字 → -A 运算后取模 → %26 再变回字母 → A