实现字符串的翻转,如:student a am i ----->i am a student. 首先,实现字符串整体的逆转----->void Reverse() 和 int strlen() 然后,实现每个子字符串的逆转----->开始为空格的空格的后一位,结束为 '\0'. #include <stdio.h> #include <stdlib.h> #include <assert.h> int strlen (const char *str) { int count =0; assert (*str!=NULL); while (*str) { count++; str++; } return count ; } void Reverse_r (char *start,char *end) { while (start < end) { char tmp=*start; *start=*end; *end=tmp; start++; end--; } } void Reverse (char *str) { char *left=str; char *right =str+strlen (str)-1; char *cur=str; Reverse_r (left,right); while (*cur) //从第一个子串的起点开始找起 { while ((*cur!=' ') && (*cur!='/0')) { cur++; } Reverse (start,cur-1); //第一个子串的尾点为空格的前一位 if (*cur==' ') { cur++; //调到下一个子串的起点 } } } int main ( ) { //char arr[]="student a am i"; //当选择自由输入要逆转字符串的内容时,用 gets. char arr[]={0}; gets ( ); Reverse (arr); printf ("%s",arr); printf ("\n"); system ("pause); return 0; }