一定要审题!!!
错误代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
char s[60] = {};
scanf("%s",s);
for(int i = 0;s[i] != '\0';++ i){
if(s[i] >= 'a' && s[i] <= 'z'){
s[i] -= 32;
}
else if(s[i] >= 'A' && s[i] <= 'Z'){
s[i] += 32;
}
}
for(int i = 0;s[i] != '\0';++ i){
if((s[i] >= 'd' && s[i] <= 'z') || (s[i] >= 'D' && s[i] <= 'Z')){
s[i] += 3;
}
if(s[i] == 'x' || s[i] == 'X' || s[i] == 'y' || s[i] == 'Y' || s[i] == 'z' || s[i] == 'Z'){
s[i] -= 23;
}
}
for(int i = 0;i < strlen(s) / 2;++ i){
swap(s[i],s[strlen(s) - i - 1]);
}
printf("%s\n",s);
return 0;
}
两个问题,一个是换大小写时候没有用else if,导致换两变相当于换个寂寞;还有审题错误,移动方向反了
改正代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
char s[60] = {};
scanf("%s",s);
for(int i = 0;s[i] != '\0';++ i){
if(s[i] >= 'a' && s[i] <= 'z'){
s[i] -= 32;
}
else if(s[i] >= 'A' && s[i] <= 'Z'){
s[i] += 32;
}
}
for(int i = 0;s[i] != '\0';++ i){
if(s[i] == 'x' || s[i] == 'X' || s[i] == 'y' || s[i] == 'Y' || s[i] == 'z' || s[i] == 'Z'){
s[i] -= 23;
}
else if((s[i] >= 'a' && s[i] < 'x') || (s[i] >= 'A' && s[i] < 'X')){
s[i] += 3;
}
}
for(int i = 0;i < strlen(s) / 2;++ i){
swap(s[i],s[strlen(s) - i - 1]);
}
printf("%s\n",s);
return 0;
}