描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
数据范围:输入的字符串长度满足 1 \le n \le 1000 \1≤n≤1000
注意本题有多组输入
输入描述:
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
输出描述:
得到逆序的句子
示例1
输入:```
I am a boy
输出:```
boy a am I
示例2
输入:```
nowcoder
输出:```
nowcod
#include<stdio.h>
#include<string.h>
int main()
{
char a[1000];
gets(a);
int len=strlen(a);
//循环从末尾寻找空格,并将空格以后的字符串输出
//再将指针变量改为'\0'手动减少字符串大小
//最后一趟循环时只有a[]的第一个字符未输出
while(len>0)//当len减到只剩一个字符时
{
char *p=strrchr(a,' ');//从新的a[]往后开始找第一个空格
if(p!=NULL)//p非空则继续
{
printf("%s " ,p+1);//当前指针p指向空格,输出想要的字符串p要+1
*p='\0';//将空格改成结束字符
len -= strlen(p);//减去p的长度
}
else
{
break;//当p为NULL说明a[]只有一个字符
}
}
printf("%s",a);//把a中第一个字符输出
return 0;
}

每一步的注释都很清楚了,多读读自行体会就明白了