你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it's算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。
输入格式:
输入在一行中给出一行文本,以.结束
提示:用scanf("%c",...);来读入一个字符,直到读到.为止。
输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。
输入样例:
It's great to see you here.
输出样例:
4 5 2 3 3 4
#include <stdio.h>
int main()
{
char string[100][100]; //用二维字符数组储存单词,一行储存一个单词(含空格或.)
int len[100] = { 0 }; //记录每行单词长度
int row = 0, col = 0;
int times = 0; //记录单词个数
for (;;)
{
scanf("%c", &string[row][col]); //每次读取一个字符
if (string[row][col] == ' ')
{
if (col != 0)
len[row] = col, times++; //空格非本行第一个字符,则储存本行单词长度,单词数+1
else
row--; //本行第一个字符为空格,则本行重置
row++;
col = 0;
}
else if (string[row][col] == '.')
{
if (col != 0)
len[row] = col, times++; //.非本行第一个字符,则储存本行单词长度,单词数+1
break;
}
else
col++; //读取到字母,不换行,继续读取
}
int i;
for (i = 0; i < times; i++) //依次输出单词长度
{
printf("%d", len[i]);
if (i != times - 1)
{
printf(" ");
}
}
return 0;
}
注意事项:
len[row] = col, times++;
上述代码有两处,若考虑两处直接输出单词长度,即分别改为 printf("%d ", col); 和 printf("%d", col); ,那么对于测试点4“开头结尾多空格”的情况,读取“.”时将不输出,而其余输出均带空格,不符合题意。
如有问题,欢迎提出。