#include <stdio.h>
#include <string.h>
int main(void) {
char a[100];
//定义字符数组a用来读取输入的字符串,最多读取100个字符,如果需要读取更多,则将100改为更大
char b[100][100];
//定义二维字符数组b用来分别存储每个单词
int i=0,j=0,k=0,m=0,n=0,c[100];
//定义各种数量
gets(a);
//读取字符串,以换行符为结束
n=strlen(a);
//计算字符串的长度
for(i=0;i<n;i++)
//遍历字符数组a的每一个元素
{
if(a[i]==32)
//如果a[i]是空格
{
c[j]=k;
//存储空格之前的那个单词的长度
k=0;
//重置变量k
j++;
//使b数组换一行存储下一个单词
continue;
//跳过本次循环
}
b[j][k]=a[i];
//令单词存储到b数组的一行中
k++;
//通过k的递增进行单词的存储
if(i==n-1)
//如果是最后一个单词
c[j]=k;
//将最后一个单词的长度赋给数组c
}
for(m=j;m>=0;m--)
//倒序输出,一行一行的输出
{
for(i=0;i<=c[j];i++)
//一个字母一个字母输出
printf("%c",b[m][i]);
j--;
printf(" ");
//输出完一个单词输出空格
}
return 0;
}
基本上每一行都有注释,代码经反复测试,均正常,如下图。如有疑问请您追问,答题不易,望采纳。