给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
输出格式:每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入样例:Hello World Here I Come输出样例:
Come I Here World Hello
#include <stdio.h> #include <string.h> int main() { char str[500001]; gets(str); int i,j,start,end; for(start = 0; str[start] != '\0'; start++) if(str[start] != ' ') break; for(end = strlen(str)-1; end >= 0; end--) if(str[end] != ' ') break; if(start == end) printf("%c\n",str[start]); else if (start > end) printf("\n"); else { int lastPosition=end,firstPosition; for(i = end; i >= start+1; i--) { if(str[i] == ' ' && str[i-1] != ' ') { lastPosition = i - 1; printf(" "); } else if(str[i] != ' ' && str[i-1] == ' ' || i == start + 1) { if(i == start + 1) firstPosition = start; else firstPosition = i; for(j = firstPosition; j <= lastPosition; j++) printf("%c", str[j]); } } printf("\n"); } return 0; }