#include <iostream> using namespace std; void RevStr(char sz[], int iLeft, int iRight) { while (iLeft < iRight) { char cTmp = sz[iLeft]; sz[iLeft] = sz[iRight]; sz[iRight] = cTmp; iLeft++; iRight--; } } void RevStrButWord(char sz[]) { RevStr(sz, 0, strlen(sz)-1); unsigned int p1 = 0; unsigned int p2 = p1; while (p2 < strlen(sz)) { while (sz[p1] == ' ' && sz[p1] != ' ') p1++; p2 = p1; while (sz[p2] != ' ' && sz[p2] != ' ') p2++; p2--; RevStr(sz, p1, p2); p1 = p2+2; p2 = p1; } } void main() { char sz[] = "You Love China"; RevStrButWord(sz); cout << sz <<endl; }
输出将是:“China Love You”。思想:先每个单词反转,然后全部反转就OK了。