将字符串按照单词顺序颠倒(单词顺序保持不变)
/* * 将"I am a programmer"输出成"programmer a am I" * 注意:相邻两个单词的空格数一次是1个,2个,3个 */#include<stdio.h>#include<string.h>/* * 反转字符串 */void reverse(char *begin,char *end){ while(begin<end) { char temp=*begin; *begin=*end; *end=temp; begin++; end--; }}void reverseWords(char *str){ char *s1=str; char *s2=str; char *s3=str; while(*s3!='\0')s3++; s3--; while(s2<=s3) { if(*s2!=' ') { if(*(s2-1)==' ') { s1=s2; } s2++; } //s2指向空格,s2-1指向非空格 else if(*s2==' '&&*(s2-1)!=' ') { reverse(s1,s2-1); s2++; } //s2指向空格,s2-1指向空格 else { s2++; } } }int main(){ char s[]="I am a programmer"; reverse(s,s+strlen(s)-1); reverseWords(s); printf("%s\n",s); return 0;}?