使用c++编程 任务描述 本关任务:编写一个程序,实现对凯撒加密算法的破解,输入恺撒加密的密文,输出破解后的明文(也是大写字母构成) 例如:明文是"Attack in the morning",密钥k等于3,则密文是"DWWDFN LQ WKH
时间: 2024-03-30 11:36:18 浏览: 114
好的,这里是一个 C++ 的实现:
```c++
#include <iostream>
#include <string>
using namespace std;
int main() {
string ciphertext; // 定义密文字符串
int k; // 定义密钥
getline(cin, ciphertext); // 获取密文
cin >> k; // 获取密钥
string plaintext; // 定义明文字符串
for (char c : ciphertext) {
if (isalpha(c)) { // 判断是否为字母
// 将字母向前移动 k 位,注意回卷到字母表开头
plaintext += static_cast<char>((c - 'A' - k + 26) % 26 + 'A');
} else {
plaintext += c; // 非字母直接拼接到明文字符串中
}
}
cout << plaintext << endl; // 输出解密后的明文
return 0;
}
```
这个程序和前面的 Python 版本类似,首先获取输入的密文和密钥,然后遍历密文中的每个字符。如果是字母,就将其向前移动 k 位,注意回卷到字母表开头。最后将解密后的明文字符串输出即可。需要注意的是,C++ 中字符类型的加减运算会自动将字符转换为其 ASCII 码,因此需要使用显式类型转换将结果转换回字符类型。
阅读全文