上海计算机学会2023年1月月赛C++丙组T2凯撒加密
发布时间
阅读量:
阅读量
题目描述
凯撒密码是一种广为人知的加密技术。凯撒把需要加密的字母按字母表向后移动 33 位,替换成密文字母。例如,所有的 A 将被变成 D,B 变成 E 等等。若要加密最后三个字母,则需要折回到前三个字母,比如 x 变 a,y 变 b,z 变 c。
例如以下明文
TheQuickBrownFoxJumpsOverTheLazyDog
将被加密成
WkhTxlfnEurzqIraMxpsvRyhuWkhOdcbGrj
给定一段只由拉丁字母组成的字符序列,请将它用凯撒加密成密文。
输入格式
一个字符序列:表示需要加密的明文
输出格式
一个字符序列:表示加密后的密文
数据范围
设输入的字符数量为 n,则保证 1≤n≤100,0001≤n≤100,000
样例数据
输入:
TheQuickBrownFoxJumpsOverTheLazyDog
输出:
WkhTxlfnEurzqIraMxpsvRyhuWkhOdcbGrj
解析:
关键点:区分字母大小写,代码如下:
#include <iostream>
#include <string>
using namespace std;
int main(){
int len,shift;
string s;
char out;
shift=3;
cin>>s;
len = s.length();
for(int i=0;i<len;i++){
if(islower(s[i])){
out=((s[i]-'a'+shift)%26)+'a';
}else if(isupper(s[i])){
out=((s[i]-'A'+shift)%26)+'A';
}else{
out=s[i];
}
cout<<out;
}
cout<<endl;
return 0;
}
全部评论 (0)
还没有任何评论哟~
