void invert(char* a, int start, int end)
{
for(;start<end;++start,--end)
{
char temp=a[start];
a[start]=a[end];
a[end]=temp;
}
}
void invertwords(char* a, int start, int end)
{
invert(a,start, end);
for(int i=start;i<=end;++i)//需要注意<=end。
{
if(a[i]=='.')
{
invert(a, start, i-1);
start=i+1;
}
}
invert(a, start, end);//需要注意最后一个单词的反转。
}
int _tmain(int argc, _TCHAR* argv[])
{
char a[1000];
scanf("%s", a);
invertwords(a, 0, strlen(a)-1);
printf("%s", a);
return 0;
}
1. 遍历时的终止条件为<=end。保证最后一个单词后面如果为"."能够检测到。
2. 注意最后一个单词的反转。

本文介绍了一种用于字符串中单词反转的方法,通过两次反转操作实现:首先整体反转字符串,然后逐个反转每个单词。文章提供了详细的C语言实现代码,并强调了边界情况处理的重要性。
297

被折叠的 条评论
为什么被折叠?



