例:
输入:I like beijing.
输出:beijing. like I
方法:我们可以先将整个字符串逆序,然后再将里面的每个单词进行逆序。
#include#include #include void reverse_arr(char * start ,char *end) { assert(start); assert(end); char tmp = *start; *start = *end; *end = ' '; if (strlen(start) > 1) { reverse_arr(start + 1, end - 1); }; *end = tmp; } void reverse_words(char* arr) { assert(arr); char* start = arr; char* end = arr; while (*end != ' ')//end指向' '时,停止逆序 { while (*end != ' ' && *end != ' ')//找到空格,并且保证不是' ' { end++; } //逆序 reverse_arr(start, end - 1);//end指向空格,而空格无需逆序,所以-1 if (*end != ' ')//end不是' ',则start指向空格后面新的单词 start = ++end; } } int main() { char arr[20] = "I like beijing."; int end = strlen(arr); //逆序整个字符串 reverse_arr(arr,arr+end-1); //逆序单个单词 reverse_words(arr); printf("%s", arr); return 0; }



