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;
    }

     
  • 相关阅读:
    cf1100 F. Ivan and Burgers
    cf 1033 D. Divisors
    LeetCode 17. 电话号码的字母组合
    LeetCode 491. 递增的子序列
    LeetCode 459.重复的子字符串
    LeetCode 504. 七进制数
    LeetCode 3.无重复字符的最长子串
    LeetCode 16.06. 最小差
    LeetCode 77. 组合
    LeetCode 611. 有效三角形个数
  • 原文地址:https://www.cnblogs.com/chen9510/p/4435369.html
Copyright © 2011-2022 走看看