加密问题,将字符向前移动三位输出结果

编写一个程序,完成情报(无空格输入)的加密操作。具体规则是将情报上的字母往前移动3位,如字母z变成字母w,字母y变成字母v,字母a移动之后变成字母x,字母b移动之后变成字母y

这个字符直接加3就好了,比如char x=’a’;char y=x+3;

这个可以分两种情况来考虑:

第一,如果是字母表的前三个字母,则将其加上26减去3,以便对应将其从字母表尾部往前移动三个位置;

第二,如果是第三个字母后的字母,则直接减去3即可完成位置移动。

代码如下:

参考链接:

#include <iostream>
using namespace std;
int main(void){
    
    char secret[128];
    cout<<"请输入要加密的情报内容:";
    cin>>secret;
    
    int i=0;
    while(secret[i]!='\0'){
        
        char ch = secret[i];
        // 如果是前三个字母,则将其+26再减3,以便将其从字母尾部往前移动三个位置 
        if((ch>='a'&&ch<='c')||(ch>='A'&&ch<='C')){
            
            ch=ch+26-3;
        }else if((ch>='d'&&ch<='z')||(ch>='D'&&ch<='Z')){  // 如果是前三个字母后后面的字母,则直接减去3,即可完成位置移动 
            
            ch=ch-3;
        }
        secret[i]=ch; // 将加密后的字母,放置到当前位置完成加密 
        
        i++;
    }
    
    // 打印加密后的结果 
    cout<<"加密后的情报为:"<<secret;
    

} 

img