例如:将“I am a girl” 逆序成“girl a am I”
两个步骤:第一,先按单词逆序得 “I ma a lrig”; 第二步,将整个句子逆序得 "girl a am I"
#include <stdio.h>
#include <string.h>
#define MAXSIZE 1024
//交换首尾两个字符并向中间移动指针直到交叉
void ReverseWord(char *p, char *q)
{
while (p < q)
{
char t = *p;
*p = *q;
*q = t;
++p;
--q;
}
}
char *Reverse(char *s)
{
char *p = s;
char *q = s;
//将前(n -1 )个单词逆序
while (*q != '\0')
{
if (*q == ' ')
{
ReverseWord(p, q - 1);
++q;
p = q;
}
else
++q;
}
//将最后一个单词逆序
ReverseWord(p, q - 1);
//将整个字符串逆序
ReverseWord(s, q - 1);
return s;
}
int main()
{
char str[MAXSIZE];
gets(str);
int len = strlen(str);
printf("%s\n", Reverse(str));
return 0;
}