http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1002
代码一:
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
int main()
{
int k,n,flag,len;
char a[1005],b[305][400];
while(cin>>n)
{
getchar();
while(n--)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
gets(a);
flag=0;
len=strlen(a);
k=-1;
for(int i=0,j=0;i<len;i++)
{
if(a[i]>='a'&&a[i]<='z')
{
if(flag)
{
b[k][j]=a[i];
j++;
}
else
{
k++;
j=0;
b[k][j]=a[i];
j++;
}
flag=1;
}
else
{
if(flag)
{
b[k][j]='\0';
j=0;
}
flag=0;
}
}
for(int i=0;i<=k;i++)
if(i!=k) cout<<b[i]<<' ';
else cout<<b[i]<<endl;
cout<<k+1<<endl;
}
}
}
代码二:
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
int main()
{
int n,lena,lenb,count;
char a[1005],b[1005];
while(cin>>n)
{
getchar();
while(n--)
{
count=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
a[0]=' ';
gets(a+1);
lena=strlen(a);
for(int i=1,j=0;i<lena;i++)
{
if((a[i-1]<'a'||a[i-1]>'z')&&(a[i]<'a'||a[i]>'z'))
b[j]=' ';
else
{
if(a[i]>='a'&&a[i]<='z') b[j]=a[i];
else b[j]=' ';
j++;
}
}
lenb=strlen(b);
for(int i=0;i<lenb;i++)
if(b[i]==' ')
count++;
cout<<b<<endl<<count+1<<endl;
}
}
}
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