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. 注意最后一个单词的反转。