例如: 输入:i love you
输出:you love i
思路:
1、先整体逆序 : uoy evol i 2、再进行局部逆序 : you love i
原码:
#include <stdio.h>
#include <string.h>
void Rev(char *p,int len);
int main(int argc, char *argv[])
{
char str[50] = {0};
char *p = str;
char *q = str;
gets(str);
//把整个数组逆序
Rev(str,strlen(str));
//把局部逆序
while(*p)
{
if(*p == ' ') //判断是否为空格
{
Rev(q,p-q); //将每一个单词逆序
q = p+1; //将q指向下一个单词开头
}
p++;
}
Rev(q,p-q);//最后一个单词无法判断,所以最后单独再逆序一次
puts(str);
return 0;
}
void Rev(char *p,int len)
{
char temp = 0;
for(int i= 0;i<len/2;i++)
{
temp = p[i];
p[i] = p[len-i-1];
p[len-i-1]= temp;
}
}
运行结果: