思路:先将一句话中所有的字符都倒置,再将每个单词中的字符倒置。
例:I love girl.
(1).lrig evol I
(2)girl. love I
#include <stdio.h>
void InvertString(char* left, char* right) {
//字符串逆置
char temp = 0;
while (left < right) {
temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
int main() {
//将一句话的单词进行倒置,标点不倒置。
printf("请输入要倒置的语句>");
char arr[100] = {0};
gets(arr);//从键盘获取字符串
int len = strlen(arr) - 1;
//1.逆置字符串
InvertString(arr,arr+len);
printf("%s\n", arr);
//2.逆置每一个单词
char* start = arr;
while (*start) {
char* end = start;
while (*end != ' ' && *end != '\0') {
end++;
}
//逆序每一个单词
InvertString(start, end - 1);
if (*end = ' ') {
start = end + 1;
}
else {
start = end;
}
}
printf("%s\n", arr);
return 0;
}
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/c368875c7180698bd22c61c272459b75.jpeg)