Advertisement

上海计算机学会2023年1月月赛C++丙组T2凯撒加密

阅读量:
题目描述

凯撒密码是一种广为人知的加密技术。凯撒把需要加密的字母按字母表向后移动 33 位,替换成密文字母。例如,所有的 A 将被变成 DB 变成 E 等等。若要加密最后三个字母,则需要折回到前三个字母,比如 xaybzc

例如以下明文
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)

还没有任何评论哟~