将一句话里的单词进行倒置,标点符号不倒置。比如一句话:i come from beijing.倒置后变成:beijing. from come i。
解析:解决该问题可以分为两步:第一步全盘置换该语句成:.gnijieb morf emoc i。第二步进行部分翻转,如果不是空格,则开始翻转单词。
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 void reverseSentence(char *str) 6 { 7 int i, len, begin, end; 8 char tmp; // 缓存翻转的字符 9 10 len = strlen(str);//读取字符串的长度 11 // 第一步:全盘翻转 12 begin = 0; 13 end = len - 1; 14 while (end > begin){ 15 tmp = str[begin]; 16 str[begin++] = str[end]; 17 str[end--] = tmp; 18 } 19 // 第二步:进行部分翻转,只翻转单词的顺序 20 i = 0; 21 while (i < len){ 22 if (str[i] != ' '){ 23 begin = i; // 单词起始位置 24 while (str[i] != '