/***********************************************************************
目的:输入一句英文(长度不超过100),并将其中的单词进行倒置,标点不倒置。如 I like beijing. 倒置后变为 beijing. like I
分析:三步翻转法
▶ 1、字符串整体翻转:
.gnijieb ekil I
▶ 2、每个单词逆序
beijing. like I
平台:Visual studio 2017 && windows
*************************************************************************/
📝 实现代码1:
#include<stdio.h> #include<string.h> void reverse(char* left, char* right) { while(left < right) { char temp = 0; temp = *left; *left = *right; *right = temp; left++; right--; } } int main() { char arr[100] = { 0 }; //输入字符串 gets(arr); //求字符串的长度 int len = strlen(arr); //字符串整体逆置,确定左下标和右下标 reverse(arr, arr + len - 1); //每个单词逆置 char* start = arr; while(*start) { char* end = start; while(*end != ' ' && *end != '\0') { end++; } reverse(start, end - 1); if(*end == ' ') { //说明后面还有未逆置的单词 start = end + 1; } else { //遇到了'\0',不能再往后了 start = end; } } printf("%s\n", arr); return 0; }