#include<stdio.h>
int main(){
char a[1001];
int t,i=-1,j,p;
fgets(a,1000,stdin);
t=strlen(a);
while(++i<t){
if(a[i]>='a'&&a[i]<='z')
a[i]-=32;
else if(a[i]>='A'&&a[i]<='Z')
a[i]+=32;
}
int k=t-1;i=-1;
while(++i<t){
j=i;
if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z'){
while(a[j]>='a'&&a[j]<='z'||a[j]>='A'&&a[j]<='Z'){
j++;
}j--;
for(p=0;p<=(j-i)/2;p++){
int temp=a[i+p];
a[i+p]=a[j-p];
a[j-p]=temp;
}i=j;
}
}
while(k-->0)
printf("%c",a[k]);
return 0;
}
大致思路是逆序输出,不分单词,反转字母字符串。大小写处理和打印应该没有错误