c++电文加密规则问题

img

将当前字符ASCII码减去'a'值后加3,加的结果求余26,最后再加上'a'就行了

#include <iostream>
using namespace std;
int main()
{
    char s[100];
    int i=0;
    gets(s);
    while(s[i] != 0)
    {
        s[i] = (s[i] - 'a' + 3) % 26 + 'a';
        i++;
    }
    cout<<s;
    return 0;
}


#include <iostream>
using namespace std;
int main()
{
    char buf[100];
    int i=0;
    gets(buf);
    while (buf[i])
    {
        buf[i] = buf[i] + 3;
        if(buf[i]>'z')
            buf[i] = buf[i]-'z'+'a'-1;
        i++;
    }
    cout << buf<<endl;
    return 0;
}

#include <iostream>
using namespace std;
int main(){
    //首先解决输入任意长度的字符串然后按回车进行编译的问题,这里使用getchar()来处理
    char c;
    //不要吝啬加括号,因为优先级可能导致出现问题 
    while((c=getchar())!='\n'){
        if((c>='A'&&c<='V')||(c>='a'&&c<='v')){
            c=c+4;
            cout<<c; 
        }else if((c>='W'&&c<='Z')||(c>='w'&&c<='z')){
            c=c-22;
            cout<<c;
        }
        else{
            cout<<c;
        }
    }
    cout<<endl;
    return 0; 
}