描述

将一个英文语句以单词为单位逆序排放。例如“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;
}

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