方法一:
#include<string.h> #include<iostream> using namespace std; int main() { char
a[500]; char b[500]; char c[500]; cin.getline(a,500); for(int
i=0;i<strlen(a);i++) { if(a[i]=='x') { b[i]='a'; } else if(a[i]=='y') {
b[i]='b'; } else if(a[i]=='z') { b[i]='c'; } else if(a[i]=='X') { b[i]='A'; }
else if(a[i]=='Y') { b[i]='B'; } else if(a[i]=='Z') { b[i]='C'; } else {
b[i]=a[i]+3; } } for(int i=0;i<strlen(a);i++) { c[i]=b[strlen(a)-1-i]; }
for(int i=0;i<strlen(a);i++) { if(c[i]>=65&&c[i]<=90) { c[i]=c[i]+32; } else {
c[i]=c[i]-32; } } for(int i=0;i<strlen(a);i++) { cout<<c[i]; } return 0; }
方法二:用switch...case
#include<string.h> #include<iostream> using namespace std; int main() { char
a[500]; char b[500]; char c[500]; cin.getline(a,500); for(int
i=0;i<strlen(a);i++) { switch(a[i]) { case 'x': b[i]='a'; break; case 'y':
b[i]='b'; break; case 'z': b[i]='c'; break; case 'X': b[i]='A'; break; case
'Y': b[i]='B'; break; case 'Z': b[i]='C'; break; default: b[i]=a[i]+3; } }
for(int i=0;i<strlen(a);i++) { c[i]=b[strlen(a)-1-i]; } for(int
i=0;i<strlen(a);i++) { if(c[i]>=65&&c[i]<=90) { c[i]=c[i]+32; } else {
c[i]=c[i]-32; } } for(int i=0;i<strlen(a);i++) { cout<<c[i]; } return 0; }
方法三:最精简
#include<string.h> #include<iostream> using namespace std; int main() { char
a[500]; char b[500]; char c[500]; cin.getline(a,500); for(int
i=0;i<strlen(a);i++) { if((a[i]>='x'&&a[i]<='z')||(a[i]>='X')&&a[i]<='Z') {
b[i]=a[i]-23;//x,y,z三个元素向右移动3个位置的情况 } else b[i]=a[i]+3; } for(int
i=0;i<strlen(a);i++) { c[i]=b[strlen(a)-1-i];//逆序:第一个和最后一个互换;第二个和倒数第二个互换 }
for(int i=0;i<strlen(a);i++) { if(c[i]>=65&&c[i]<=90)//大写字母 加32变为小写字母 {
c[i]=c[i]+32; } else//小写字母 { c[i]=c[i]-32; } } for(int i=0;i<strlen(a);i++) {
cout<<c[i]; } return 0; }