两步翻转法 1.字符串整体翻转 2.每个单词翻转
比如要将I am student.按单词翻转,变为student. am I
#include#include void reverse_string1(char* left,char* right) { char temp; while (left < right) { temp = *left; *left = *right; *right = temp; left++; right--; } } int main() { char arr1[20] = {0}; printf("请输入字符串:n"); gets(arr1); //不能使用scanf,因为scanf遇到空格就输入结束了 int len = strlen(arr1); reverse_string1(arr1,(arr1+len-1)); printf("整体逆序:%sn", arr1); //.tenduts ma I char* start = arr1; while (*start != ' ') { char* end = start; while (*end != ' ' && *end != ' ') { end++; } reverse_string1(start, end - 1); //end找到空格的首地址,要减一才是一个单词的最后一个字符 //如果是空格,则再找后面的单词,如果是' ',start = ' ',退出循环 if (*end == ' ') { start = end + 1; } else { start = end; } } printf("每个单词逆序:%sn", arr1); //student. am I return 0; }



