基本思路:
从字符串末尾向首地址元素倒序遍历,遇见空格字符且该空格字符下一位字符非空格时,打印出字符串,以空格或者'\0'结束。由于原字符串的开头没有空格,使用倒叙遍历无法找到第一个单词,故需要再手动从字符串数组的首地址元素开始,以空格或者'\0'结束,将第一个单词输出。
c语言源码:

#include<stdio.h>
#include<string.h>
int main()
{
    char a[100000];
    while (gets(a))
    {
        int i,j;
        for(i=strlen(a)-1;i>=0;i--)
        {
            if(a[i]==' '&&a[i+1]!=' ')
            {
                for(j=i+1;a[j]!='\0'&&a[j]!=' ';j++)
                {
                    printf("%c",a[j]);
                }
                printf(" ");
            }
        }
        for(i=0;a[i]!=' '&&a[i]!='\0';i++) printf("%c",a[i]);
        printf("\n");
    }
    return 0;
}

注意事项:
1.由于每个单词之间可能存在若干个空格,所以再使用倒叙遍历寻找每个单词首地址时,需要以“该元素是空格,且下以元素非空格”来判断。
2.若字符串只存在一个单词或者字符时,在输出时注意字符串单词以空格或者字符串结束字符'\0'判断。