- /*
- --------------------------------------------------------------------------------
- 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
- 输入格式:
- 在一行内给出总长度不超过 500 000 的字符串。字符串由若干单词和若干空格组成,
- 其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
- 输出格式:
- 每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有 1 个空格(注
- 意,最后一个单词后面没有空格)。
- 输入样例:(□:表示空格)
- □□□□□Hello□□□□□World□□□□□Here□□□I□□Come□□□□□□□
- 输出样例:
- Come I Here World Hello
- --------------------------------------------------------------------------------
- */
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- long i,j,k,len,stop;
- char s[500002];
- char flag = 0; // 1:has char to putout
- gets(s);
- len = strlen(s); // Un '\\0'
- if ( len != 0 ) {
- for (i = len-1; i >= 0; i--) {
- if (s[i] == ' ' || i==0 ) {
- if ( i !=0 ) {
- if (flag == 1) {
- for (j = i+1; j <= stop; j++) {
- putchar(s[j]);
- }
- flag = 0;
- for (k=0; k<i;k++) {
- if (s[k]!=' ') {
- putchar(' ');
- break;
- }
- }
- }
- } else {
- for (j = i; s[j]!=' '; j++) {
- putchar(s[j]);
- }
- }
- }
- if (s[i] != ' ') {
- if (flag == 0) {
- flag = 1;
- stop = i;
- }
- }
- }
- }
- return 0;
- }
- //该片段来自于http://www.codesnippet.cn/detail/1612201411260.html
来源: http://www.codesnippet.cn/detail/1612201411260.html