注意:倒置是以单词为单位的“逆置”,不是字符串的逆置;
思路:第一我们把每个单词分别逆置,然后再把字符串整体进行逆置;、
思路讲完我们上代码:重点是靠考虑单词结束表中,数组的越界要处理好。
#include<stdio.h>
#include<string.h>
void reverse(char* left,char* right)
{
while(left<right)
{
char t=*left;
*left=*right;
*right=t;
left++;
right--;
}
}
int main()
{
char n[100]={0};
gets(&n);
int ret=strlen(n);
char* star=n;
char* end=n;
while(*end!='\0') //不会越界
{
while(*end!=' '&& *end!='\0') //考虑结束标志,考虑越界
{
end++;
}
reverse(star,end-1);
if(*end=='\0') //考虑越界情况
end=end;
else
{
star=end+1;
end=star;
}
}
reverse(n,n+ret-1);
printf("%s\n",n);
return 0;
}