解题思路:
1.由题可知,原文转密文的三个要素分别为,原文向左移动了三个字符位置,即ASCLL码减小了3,并且大小写反转,逆序存储
2.那么如果给定了密文的话,转化为原文的步骤应该是先大小写反转,然后再将字符向右移动三个位置即,ASCLL码加3,这里注意的是判断边界,如果大写字母超出了90,或者小写字母超出了122,则应该减去26,让他从a开始,形成环状
3.最后倒序输出,因为是逆序存储的
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
cin>>a;
int len=a.length();
for(int i=0;i<=len-1;i++)
{
if(a[i]>='a'&&a[i]<='z')
a[i]=a[i]-32;
else
a[i]=a[i]+32;
}//将大小写反转
for(int i=0;i<=len-1;i++)
{
a[i]=a[i]+3;//密文转原文向右移动三个位置
if((a[i]>122)||(a[i]>90&&a[i]<97))//如果超出了边界
a[i]=a[i]-26;//要减去26形成环状
}
for(int i=len-1;i>=0;i--)//倒序输出
cout<<a[i];
return 0;
}