你的程序要读入一行文本,其中以空格分隔为若干个单词,以.
结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it's
算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.
不计算在内。
输入格式:
输入在一行中给出一行文本,以.
结束
提示: 用scanf("%c",...);
来读入一个字符,直到读到.
为止。
输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。
输入样例:
It's great to see you here.
输出样例:
4 5 2 3 3 4
提交结果:
参考代码:
#include<stdio.h>
int main()
{
char new,old;
int count=0,flag=1;//flag用来标记是否是第一个单词
scanf("%c",&new);
while(new!='.')
{
old=new;
if(old!=' ')
{
count++;
}
scanf("%c",&new);
/*前一个字符不是空格,
后一个字符是空格表示前面一个单词到此结束*/
if(old!=' '&&new==' ')
{
if(flag==1)//如果是第一个单词
{
printf("%d",count);
flag=0;
}
else
{
printf(" %d",count);
}
count=0;
}
}
if(old!=' '&&count!=0)//输出最后一个单词
{
if(flag==1) printf("%d\n",count);//如果最后一个单词也是第一个单词
else printf(" %d\n",count);
}
return 0;
}
思路:
这里我们设置两个指针new,old,用来判断一个单词的开始与结束,具体步骤参考代码。这题容易出错的点是情况考虑不全。例如,测试点1为空句子,这里是不需要输出的;测试点4可能出现最后一个单词与.
之间仍有多个空格 。