//第一步:将整个字符串反转
//第二步:用循环,以空格为分界点,每次反转一个单词

//先定义反转(不带空格的)字符串函数
void reverse(char* s, int begin, int end){
    char tmp;
    while(begin < end){
        tmp = s[begin];
        s[begin] = s[end];
        s[end] = tmp;
        begin++;
        end--;
    }
}
//反转(带空格的)长字符串函数
char* trans(char* s, int n ) {
    reverse(s, 0, n-1);   //第一步,将整个字符串反转
    int i = 0, j = 0;
    while(i < n){ 
        j = i;   //不要直接用i来操作,而是用j接收i来操作,
        while(j < n && s[j] != ' ')
       {                           //止于空格,用于将单个单词的大小写对换
            if(s[j] >= 'A' && s[j] <= 'Z') 
                    s[j] += 32;  //大写换小写
            else if(s[j] >= 'a' && s[j] <= 'z')
                    s[j] -= 32;   //小写换大写
            ++j;   //每转换一个字母之后j后移一位
          }
     reverse(s, i, j-1);   //当j指向空格时退出循环,开始反转单词
     i = j + 1;  //反转完之后,i应该指向下一个单词的第一个字母,也就是空格之后那个字母
     }
     return s;
}