zoukankan      html  css  js  c++  java
  • PAT  说反话-加强版   (20分)

    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

    输入格式:

    测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。

    输出格式:

    每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。

    输入样例:

    Hello World   Here I Come
    

    输出样例:

    Come I Here World Hello
    

    先放正确代码
     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 
     8 int main()
     9 {
    10     char s[500005];
    11     gets(s);
    12     int len=strlen(s),i,j;
    13     bool flag=false;
    14     for(i=len-1;i>=0;i--)
    15     {
    16         if(s[i]==' '&&s[i+1]!=' ')
    17         {
    18             if(flag)
    19                 printf(" ");
    20             for(j=i+1;j<len;j++)
    21             {
    22                 if(s[j]==' ')
    23                     break;
    24                 printf("%c",s[j]);
    25                 flag=true;
    26                     
    27             }
    28         }
    29         else if(!i&&s[i+1]!=' ')
    30         {
    31             if(flag)
    32                 printf(" ");
    33             for(j=i;j<len;j++)
    34             {
    35                 if(s[j]==' ')
    36                     break;
    37                 printf("%c",s[j]);
    38                 flag=true;
    39             }
    40         }
    41     }
    42     printf("
    ");
    43     return 0;
    44 }

    再放错误的

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 
     8 int main()
     9 {
    10     char s[500005];
    11     gets(s);
    12     int len=strlen(s),i,j;
    13     bool flag=false;
    14     for(i=len-1;i>=0;i--)
    15     {
    16         if(s[i]==' '&&s[i+1]!=' ')
    17         {
    18             if(!flag)
    19             {
    20                 flag=true;
    21             }
    22             else
    23                 printf(" ");
    24             for(j=i+1;j<len;j++)
    25             {
    26                 if(s[j]==' ')
    27                     break;
    28                 printf("%c",s[j]);
    29                     
    30             }
    31         }
    32         else if(!i&&s[i+1]!=' ')
    33         {
    34             if(!flag)
    35             {
    36                 flag=true;
    37             }
    38             else
    39                 printf(" ");
    40             for(j=i;j<len;j++)
    41             {
    42                 if(s[j]==' ')
    43                     break;
    44                 printf("%c",s[j]);
    45                     
    46             }
    47         }
    48     }
    49     printf("
    ");
    50     return 0;
    51 }

    错误就在于那个flag,导致格式错误,不过我不知道为什么会这样,希望哪位大神看到可以给我解答一下。

  • 相关阅读:
    jQuery 2.0.3 源码分析 回调对象
    JQuery+JQuery ui实现的弹出窗口+遮罩层+拖动+更改大小~!
    2019.8.25 小结
    2019.8.23 小结
    宜中食堂游记
    2019.8.21小结
    2019.8.22小结
    2019.8.19小结
    题解 CF499A 【Watching a movie】
    2019.8.18小结
  • 原文地址:https://www.cnblogs.com/Annetree/p/6512016.html
Copyright © 2011-2022 走看看