zoukankan      html  css  js  c++  java
  • 长句拆单词

    Problem : 1002

    Time Limit : 1000ms

    Memory Limit : 65536K

    description

    有一个用空格( )、逗号(,)或是句号(.)分隔的许多英文单词组成的字符串(分隔的空格可以是多个)。请编写程序将这些单词分开并输出。
    
    要求,在main函数中完成数据的输入。在子函数中完成拆分单词及统计个数。
    提示:可以将待拆分的字符串作为参数进行拆分。拆出的单词可以用指针数组分别指向,并可以在子函数中输出(这样就不必把用指向分出单词的指针数组作为参数了)。子函数返回拆出的单词的个数,个数可以在main中输出。

    input

    put
      输入的数据可以有多组,首先第一行输入一个整数n,接下来是n行,每行是用空格、逗号、句号分隔的字符串,字符串的长度少于1000个字符,拆出的单词的个数少于300个。

    output

    对于每组数据,首先 输出每行字符串分出的单词(分出的各个单词用空格分隔)。接下来输出分出的单词的个数。

    sample_input

    2
    good a day
    i am a
    3
    good morning. how are you, this is a desk
    yellow blue red grey
    hong se
    1
       good you. ke   kkk   kkkkk            diek

    sample_output

    good a day
    3
    i am a
    3
    good morning how are you this is a desk
    9
    yellow blue red grey
    4
    hong se
    2
    good you ke kkk kkkkk diek
    6
    

    我的代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

         int fun(char *p)
    {
        int len,sum=0,i,j,x=0,y=0,flag=1;
        len=strlen(p);
        for(i=0;i<len;i++)
        {
            if(flag==0&&(*(p+i)==' '||*(p+i)==','||*(p+i)=='.')&&(*(p+i-1)!=' '&&*(p+i-1)!=','&&*(p+i-1)!='.'))
           {
               y=i-1;
               sum++;
               flag=1;
              for(j=x;j<=y;j++)
                printf("%c",*(p+j));
                printf(" ");
           }
         if(flag==1)
        {
          if(*(p+i)!=' '&&*(p+i)!=','&&*(p+i)!='.')
            {
               x=i;
               flag=0;
            }
       }
     }

        if(*(p+i-1)!=' '&&*(p+i-1)!=','&&*(p+i-1)!='.')
        {
          sum++;
          y=len-1;
          for(j=x;j<=y;j++)
          printf("%c",*(p+j));
        }
       return sum;
    }

    int main()
    {
        int n,sum;
        char a[30][1000];
        while(scanf("%d",&n)!=EOF)
       {
        getchar();
        int i;
        for(i=0;i<n;i++)
        gets(a[i]);
       for(i=0;i<n;i++)
         {
          sum=fun(a[i]);
          printf(" ");
          printf("%d ",sum);
         }
       }
    return 0;
    }

     
  • 相关阅读:
    20201004 助教一周总结(第五周)
    20200906助教一周总结(第一周)
    如何在Linux下增加Apache的虚拟主机
    在Windows下编译OpenSSL
    Windows 应用
    祭5.12地震死难者文[转]
    VC++中控制控件台字体颜色(转)
    RSA算法简述
    如何解决在IE6下不自动换行的问题
    重庆旅游网新版上线,欢迎测试!
  • 原文地址:https://www.cnblogs.com/chen9510/p/4435369.html
Copyright © 2011-2022 走看看