案例;输入一行字符,统计其中有多少个单词,单词之间用空格隔开
解题思路;
关键是怎样确定“出现了一个新单词”,因为c语言中字符串是用字符数组处理的,所以,
可以从第一个字符开始逐个检查,判断此字符是否是新单词的开头。是将功能变量sum的值加1
(sum是统计单词数),最后sum的值就是单词的总数。
判断是否出现新的单词,可以看是否有空格出现来决定。(若干空格算一个,一行开头的空格不计数在内)。
这里提及状态变量word,要是word=0,说明前一个字符是空格;要是word=1,说明前一个字符是非空格
当前字符=空格//Y,未出现新单词,让word=0,sum不累加;
//N,//前一字符是空格word=0,新单词出现,让num加1,word=1;
//前一字符是非空格word=0,没有新单词出现,num不加1;
上代码块,大家可以自己看看
#include<stdio.h>
int main()
{
char string[99];
int i,snum=0,word=0;
char c;
gets(string);
for(i=0;(c=string[i])!='\0';i++)
{
if(c==' ')word=0;
else if(word==0)
{
word=1;
snum++;
}
}
printf("there are %d words in this line.\n",snum);
return 0;
}