1.题目
2.思路
将整个句子进行逆序,再以每个空格为分界点,每一单词进行逆序。重点是要找到每次逆序完毕后,新的单词的位置和结束的位置,具体代码如下:
#include<stdio.h>
#include<string.h>
void swap(char* left, char* right)//交换两个字符的位置
{
while (left < right)
{
char temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
int main()
{
char arr[100] = { 0 };
gets(arr);
//先进行整体的字符串的倒序,即:"I like Beijing."变为“.gnijieB ekil I"
swap(arr, arr + strlen(arr) - 1);
char* start = arr;//设置一个起点指针
char* point = arr;//设置一个判断指针
while (*point)
{
//当遍历指针走到空格或者\0处时,停止
while (*point != ' ' && *point != '\0')
{
point++;
}
swap(start, point - 1);//将字符数组从首地址处到第一个空格处进行倒序处理
start = point + 1;//起点处从首地址处转移至第一个空格后的首字母处
if (*point == ' ')
point++;//判断指针开始从第一个空格处增加,不等于\0时返回第二个while
}
//最终当判断指针指向\0处,跳出外部大循环
printf("%s\n", arr);
return 0;
}