#include<iostream>
#include<cstdio>
using namespace std;
int main(){
string a;
getline(cin,a);
int len=a.size();
for(int i=0;i<=len;i++){
if(a[i]>='a' && a[i]<='z' ||a[i]>='A' && a[i]<='Z'){
if(a[i]=='x' || a[i]=='y' || a[i]=='z' ||a[i]=='X' || a[i]=='Y' || a[i]=='Z' ){
a[i]=char(a[i]+3-25);
}
else{
a[i]=char(a[i]+3);
}
}
if(a[i]>='a' && a[i]<='z'){
a[i]=a[i]-32;
}
else{
a[i]=a[i]+32;
}
}
for(int i=len-1;i>=0;i--){
cout<<a[i];
}
return 0;
}
共 4 条回复
#include<bits/stdc++.h> using namespace std; char dxxfz(char &ch){//将一个字符大小写反转的函数 if('a'<=ch&&ch<='z')ch=toupper(ch);//如果是小写,变为大写 else if('A'<=ch&&ch<='Z')ch=tolower(ch);//如果是大写,变为小写 return ch; } char yyswz(char &ch){//将一个字母表中的字符循环右移3位的函数 if('a'<=ch&&ch<='w')ch+=3;//如果在 a 与 w 之间则直接右移3位 else if('A'<=ch&&ch<='W')ch+=3;//如果在 A 与 W 之间则直接右移3位 else if('x'<=ch&&ch<='z')ch-=23;//如果在 x 与 z 之间则循环右移3位 else if('X'<=ch&&ch<='Z')ch-=23;//如果在 X 与 Z 之间则循环右移3位 return ch; } int main(){ string s;cin>>s; transform(s.begin(), s.end(), s.begin(),dxxfz); reverse(s.begin(),s.end()); transform(s.begin(), s.end(), s.begin(),yyswz); /* transform 函数的作用是:将某操作应用于指定范围的每个元素。 transform 函数有两个重载版本: transform(first,last,result,op); first 是容器的首迭代器, last 为容器的末迭代器, result 为存放结果的容器, op 为要进行操作的一元函数对象或 sturct 、 class 。 transform(first1,last1,first2,result,binary_op); first1是第一个容器的首迭代器,last1 为第一个容器的末迭代器,first2 为第二个容器的首迭代器, result 为存放结果的容器, binary_op 为要进行操作的二元函数 对象或 sturct 、 class 。 这里我们使用的是第一个。 */ cout<<s;//输出解密后的字符串 return 0;//返回0 }
应该是:a.length()
len?
666