将一个字符长串分出单词(林大oj1002)

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 <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;


int main()
{
    char ch[1005];
    int len,n,i,j,k,ans;
    while(cin>>n)
    {
        getchar();
        for(j=1;j<=n;j++)
        {
            k=0;ans=0;
            gets(ch);
            len=strlen(ch);
            for(i=0;i<len;i++)
            {
                if(ch[i]==' '||ch[i]==','||ch[i]=='.')
                ch[i]=' ';
            }
            if(ch[0]!=' ')
            {for(i=0;i<len;i++)
            {
                if(ch[i]==ch[i-1]&&ch[i]==' ')
                k++;
                else
                {cout<<ch[i];
                if(ch[i]==' ')
                ans++;}




            }
            }
            else
            {
                for(i=1;i<len;i++)
            {
                if(ch[i]==ch[i-1]&&ch[i]==' ')
                k++;
                else
                {cout<<ch[i];
                if(ch[i]==' ')
                ans++;}




            }
            }
            cout<<endl;
            ans=ans+1;
            cout<<ans<<endl;
        }


    }
    return 0;
}

写了好久啊  写的有一些乱啊  真是  终于写对了   哇哦!!!

你可能感兴趣的:(C语言,计算机)