给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
思路:取自胡凡的《算法笔记》
1 #include <stdio.h> 2 #include <cstring> 3 int main() 4 { 5 char s[266]; 6 gets(s); 7 8 char s2[80][80]; 9 int r = 0, c = 0; 10 11 int len = strlen(s); 12 for (int i = 0; i <= len; i++) 13 { 14 if (s[i] != ' ') 15 s2[r][c++] = s[i]; 16 else 17 { 18 s2[r][c] = '\0'; //给每个单词后面添加'\0' 19 r++; 20 c = 0; 21 } 22 23 } 24 25 //r是最后一个单词的下标,因为最后一个单词读取的时候并没有使r++; 26 27 for (int i = r; i >= 0; i--) 28 { 29 printf("%s", s2[i]); 30 if (i != 0) 31 printf(" "); 32 else 33 printf("\n"); 34 } 35 36 37 return 0; 38 }
法二:
1 #include <stdio.h> 2 3 int main() 4 { 5 char str[80][80]; 6 int i = 0; 7 while (scanf("%s", str[i]) != EOF) 8 i++; 9 10 for (int j = i - 1; j >= 0; j--) 11 { 12 printf("%s", str[j]); 13 if (j == 0) 14 printf("\n"); 15 else 16 printf(" "); 17 } 18 19 return 0; 20 }