你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it’s算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。
输入格式:
输入在一行中给出一行文本,以.结束
提示:用scanf("%c",…);来读入一个字符,直到读到.为止。
输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
char n,last_n;
int cnt = 0,a[20],j = 0;
while(scanf("%c",&n) != NULL)
{
if(n != ' ' && n != '.')
{
cnt++;
}
if(cnt != 0 && last_n != ' ' && (n == ' ' || n == '.'))
{
a[j++] = cnt;
cnt = 0;
}
if(n == '.') break;
last_n = n;
}
for(int i = 0 ; i < j ; i++)
{
printf("%d",a[i]);
if(i < j - 1) printf(" ");
}
return 0;
}
用字符串来读的话会更简单一些,这是不用数组的情况
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
char n[10];
int cnt = 0; //cnt记录单词的数目
while(scanf("%s",&n) != NULL)
{
int l = strlen(n);
if(cnt != 0 && (n[l - 1] != '.' || l > 1)) //输出空格
printf(" ");
if(n[l - 1] == '.') //结束条件
{
if(l != 1)
printf("%d",l - 1);
break;
}
else
{
printf("%d",l);
cnt ++;
}
}
return 0;
}
用数组的话条件可以再简单一些
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
char n[10];
int a[10],j = 0 , i;
while(scanf("%s",&n) != NULL)
{
int l = strlen(n);
if(n[l - 1] == '.') //结束条件
{
if(l != 1)
a[j++] = l - 1;
break;
}
else
{
a[j++] = l;
}
}
for(i = 0 ; i < j ; i++)
{
printf("%d",a[i]);
if(i < j - 1) printf(" ");
}
return 0;
}