代码:
#include <stdio.h>
#include <string.h>
void Reverse(char *arr)//将数组中的所有字符倒置
{
int ArrLen = strlen(arr);
int n = ArrLen / 2;
for (int i = 0;i < n;++i)
{
char tmp = arr[i];
arr[i] = arr[ArrLen-1-i];
arr[ArrLen - 1 - i] = tmp;
}
}
int Count(char *arr)//统计该字符数组中有几个单词
{
int count = 1;
int ArrLen = strlen(arr);
for (int i = 0;i < ArrLen;++i)
{
if (arr[i] == ' ')
{
++count;
}
}
return count;
}
void ReverseSentence(char *arr)
{
Reverse(arr);//先将整个句子中的每个元素都进行逆置
//int ArrLen = strlen(arr);
int Current = 0;
int WordNumber = Count(arr);
for (int i = 0;i < WordNumber;++i)
{
int j = Current;
int k = 0;//统计一个单词中的字母个数
while (arr[j] != ' '&&arr[j]!='\0')
{
++k;
++j;
}
int g = 0;
for (int v = Current;v <=Current+ k / 2;++v)
{
char tmp = arr[v];
arr[v] = arr[Current+k-g-1];
arr[Current + k - g-1] = tmp;
++g;
}
Current = Current + k+1;
}
}
int main()
{
char arr[] = "hello world wangpengcv xiaobai";
ReverseSentence(arr);
printf("%s\n",arr);
return 0;
}