解题思路: 遍历法
将输入的字符串 按符号解析,符合要求的放在 str_new 二维数组中,随后,将二维数组从高往低输出,欢迎大家交流 其他的新解法,

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main(void) {
    char str[10001] = {0};
    char str_new[500][21] = {0};
    fgets(str, 10001, stdin);
    
    unsigned int length = strlen(str) - 1;
    unsigned int new_x = 0;
    unsigned int new_y = 0;
    unsigned int flag = 0;
    for(unsigned int i = 0; i < length; i++) { // 易错点,特别注意循环的边界问题
        if (islower(str[i]) || isupper(str[i])) { // 判断是否为大写或 小写字符 (有效数据)
            str_new[new_x][new_y] = str[i];
            new_y++; // 子字符串坐标++
            flag = 1;
        } else {
            if(flag == 1) new_x++; // 遇到分隔字符后+1 ,  注意有多个连续分隔字符的情况
            flag = 0;
            new_y = 0; // 重置每个字符串的起始节点
        }
    }
    
    for (int j = new_x; j >= 0; j--) {
        if(j == 0) printf("%s\n", str_new[j]);
        else printf("%s ", str_new[j]);
    }
    
    return 0;
}