解题思路: 遍历法
将输入的字符串 按符号解析,符合要求的放在 str_new 二维数组中,随后,将二维数组从高往低输出,欢迎大家交流 其他的新解法,
#include <stdio.h>
#include <string.h>
#include <ctype.h>
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;
}