【题目描述】
输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。
注意:如果有标点符号(如连字符,逗号),标点符号算作与之相连的词的一部分。没有被空格间开的符号串,都算作单词。
【输入】
一行单词序列,最少1个单词,最多300个单词,单词之间用至少1个空格间隔。单词序列总长度不超过1000。
【输出】
依次输出对应单词的长度,之间以逗号间隔。
【输入样例】
She was born in 1990-01-02 and from Beijing city.
【输出样例】
3,3,4,2,10,3,4,7,5
困难及尝试
-
尝试了一下int转化为char 例如 char b[10];int j=1;b[0]=j+'0';
-
b数组如果是char类型,输出会有问题,%s没法插入逗号,%c没法输出10
-
空格超过两个会计入b数组
#include<stdio.h>
#include<string.h>
//a:97 z:122 A:65 Z:90
int main()
{
char a[1020],ch;
int b[350],flag=0;
int j=0,i=0,n,k=0;
while((ch=getchar())!='\n')
{
if(ch==' '){
flag++;//防止空格也计入b数组
}
else{flag=0;}
if(flag<=1)
{
a[i]=ch;
i++;
}
}
a[i]='\0';
n=strlen(a);
for(i=0;i<n;i++)
{
if(i==n-1)
{
b[k]=(j+1);break;//这里的b[k]刚好代表末尾单词
}
else if(a[i]==32)
{
b[k]=j;
j=0;
k++;//为数组b接收下一个单词长度做准备
}
else{
j++;
}
}
printf("%d",b[0]);//末尾无逗号
for(i=1;i<=k;i++)//注意i<=k
{
printf(",");
printf("%d",b[i]);
}
return 0;
}