主要的坑:单词结束的可能有两种:1:后面是空格 2:是最后一个字符了
本人最先没有考虑到第二种情况 迷惑了半天
大小写转换都没啥问题
逆序输出 我把单词存入vector后逆序输出就可以了
最后贴出我的菜鸡水平code

//主要注意:单词结束的可能有两种  一种是空格  一种是最后一个字符了
string trans(string s, int n) 
    {
        string  str = "";
        vector<string> vs;
        string result = "";


        //第一步:大写换成小写  小写换成大写
        for ( int k= 0; k < s.size();k++)
        {
            if ( s[k]>='a'&& s[k]<='z')
            {
                str += toupper(s[k]);
            }
            if (s[k] >= 'A'&& s[k] <= 'Z')
            {
                str += tolower(s[k]);
            }

            //单词结束的情况有两种:1:空格  2:末尾了
            if (s[k] == ' ')
            {
                vs.push_back(str);
                vs.push_back(" ");
                str.clear();
            }

            if (k == s.size() - 1)
            {
                vs.push_back(str);//最后一个单词的不加空格了
                str.clear();
            }


        }

        //第二步:倒序输出(将单词作为整体存入数组里  倒叙直接输出)
        for (auto it = vs.rbegin(); it != vs.rend();it++)
        {
            result += *it;
        }

        return result;
     }