#include <stdio.h> #include<string.h> /*__DBL_MANT_DIG__1、构成单词的字符只有26个大写或小写英文字母; 2、非构成单词的字符均视为单词间隔符; 3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符; 4、每个单词最长20个字母 */ int main() { char str[5000] = {0}; int dp[5000] = {0}; gets(str); int i; int len = strlen(str); for (i = 0; i < len; i++) { if ((str[i] >= 'A' && str[i] <= 'Z' ) || (str[i] >= 'a' && str[i] <= 'z')) { dp[i] = 1; } } int num = 0; for (i = len - 1; i >= 0; i--) { //从后往前 if (dp[i] == 1) { //是字母 num++; //统计字母数 if (i == 0) { for (int j = 0; j < num; j++) { //只输出字母,倒着输出 printf("%c", str[i + j]); } } } else { //if(dp[i]==0) 不是字母 for (int j = 0; j < num; j++) printf("%c", str[i + j + 1]); num = 0; printf(" "); } } }