叉车属于什么设备:关于C语言的问题

来源:百度文库 编辑:中科新闻网 时间:2024/05/03 23:01:28
#include<stdio.h>
main()
{
char string[81];
int i,num=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;
num++;
}
printf("there are %d wordd in the line.\n",num);
}
这个程序是输入一行字符,统计其中有多少个单词,单词之间用空格分开
程序的这个部分
for (i=0;(c=string[i])!='\0';i++)
if(c=='')word=0;
else if(word==0)
{
word=1;
num++;
我看不明白 请高手解释下 谢谢啦

c如果是个空格
下个char就进入else if
由于一个单词可能是多个字母组成的,所以在下
个空格出现之钱,都不再执行num++;
当c再次等于空格时, word=0; 那么这个空格后
的字母就能进入else if 中,执num++;
依次类推

for语句明白吧?就是从字符串第一个字母开始走到最后一个(字符串以\\0作为结束标志,so以它作为循环结束条件)

if(c==\'\')word=0;表示:当前字符为空时,置标志word为0(此时不能是不是新单词开始,下一个字符可能还是空格,故不能确定是新单词开始的标志)

但是,当word=0时的下一个字符如果不为空,即前面是空格,就能确定是新的字母开始了,所以单词个数num++。

不知道你明白没有?

因为你输入的单词中的空格可能有二个三个而不是正好一个,所以连续的空格只能当作一个空格计数。word就是一个标记,它标记当前字符的前一个字符是什么,如果当前的是字符,并且前一个字符是空格,那么这就是一个新单词的开始,要加1