为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个正整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上向后偏移offset位后被替换成密文。 例如,当偏移量offset是2时,表示所有的字母被向后移动 2 位后的字母替换,即所有的字母 A 将被替换成C,字母 B 将变为 D,…,字母 X 变成 Z,字母 Y 则变为 A,字母 Z 变为 B。 输入格式: 输入第一行给出一个以回车结束的非空字符串(少于80个字符);第二行输入一个正整数offset。 输出格式: 输出加密后的结果字符串。 如果输入的offset不在有效范围内,则在一行中输出"Invalid."。 输入样例1: 在这里给出一组输入。例如: Hello Hangzhou 2 输出样例1: 在这里给出相应的输出。例如: Jgnnq Jcpibjqw 输入样例2: 在这里给出一组输入。例如: z=x+y -1 输出样例2: Invalid. 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
时间: 2024-03-19 22:43:31 浏览: 89
php凯撒密码加密和解密---适合加密英文
5星 · 资源好评率100%
以下是一个 C++ 实现的代码,用于将输入的字符串进行恺撒密码加密,然后输出加密后的结果。
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s); // 读入字符串
int offset;
cin >> offset; // 读入偏移量
if (offset < 1 || offset > 25) { // 偏移量不在有效范围内
cout << "Invalid." << endl;
return 0;
}
for (int i = 0; i < s.size(); i++) {
if (s[i] >= 'a' && s[i] <= 'z') { // 处理小写字母
s[i] = (s[i] - 'a' + offset) % 26 + 'a';
} else if (s[i] >= 'A' && s[i] <= 'Z') { // 处理大写字母
s[i] = (s[i] - 'A' + offset) % 26 + 'A';
}
}
cout << s << endl; // 输出加密后的结果
return 0;
}
```
该程序首先读入输入的字符串和偏移量,如果偏移量不在有效范围内,则输出 "Invalid." 并结束程序。否则,程序使用一个 for 循环遍历字符串中的每个字符,如果是小写字母,则将其加上偏移量并对 26 取模,再加上 'a' 的 ASCII 值得到加密后的字符;如果是大写字母,则同理处理。最后,程序输出加密后的字符串。
需要注意的是,该程序只能处理 ASCII 码表中的字母,对于其他字符如数字、空格、标点符号等,程序不进行处理直接输出。
阅读全文