解题思路:遍历每个元素,分成大写字母和小写字母两个情况。先求出该元素与首字母的距离,然后+1变成后面一个字母,%26防止超出最大字母。最后再加上首字母成为新字母。
#include<iostream>
using namespace std;
int main()
{
string a;
getline(cin,a);
for(int i=0;i<a.size();i++)//使用 for 循环遍历字符串 a 的每一个字符
{
if(a[i]>='a'&&a[i]<='z'){
a[i]='a'+(a[i]-'a'+1)%26;//判断它是否为小写字母。。若是,则按字母表顺序循环右移一位,即将其改为 a 加上 (a[i]-'a'+1)%26,其中 (a[i]-'a'+1)%26 的结果是对应字母的索引值加1后对26取模得到的值,再与 a 相加
}
else if(a[i]>='A'&&a[i]<='Z'){//如果字符不是小写字母,则判断它是否为大写字母
a[i]='A'+(a[i]-'A'+1)%26;
}
}
cout<<a<<endl;//输出
return 0;
}