请高手指点c语言中的小问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 09:40:54
下面是“输入一行字符,统计其中有多少单词”的c程序
#include<stdio.h>
void main()
{char string[80];
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 is %d words in the line.\n",num);}
请详细解释下倒数第五行到倒数第二行的内容,这段不理解,谢谢!

void main()
{
char string[80];
int i,num=0,word=0;/*用num表示单词的个数,word是一个标识,word=0时意味着此时读取的不是一个单词中的某个字母,word=1时意味着这时读取的是单词中的字母*/
char c;
gets(string);
for(i=0;(c=string[i])!='\0';i++)
if(c==' ') word=0;//若读到空格,那么word=0,空格不是一个词中的字母
else if(word==0)/*若不是空格,必然是字母,那么这个是一个单词的第一个字母吗?是的话那么计数num需要加1,不是就不加了。如果这时word=0,就是说上次读取的是空格,所以这就是一个词的第一个字母了*/
{
word=1;//记录下单词已经开始,
num++;//单词个数加1
}
printf("There is %d words in the line.\n",num);
}

不说程序写的怎么样,只解释
#include<stdio.h>
void main()
{char string[80];
int i,num=0,word=0;
char c;
gets(string);
for(i=0;(c=string[i])!='\0';i++)
if(c==' ') word=0;//word只是一个标志位,如果是当前字符时空格,则标志位word置0可以表示上个单词已结束。
else if(word==0)//有接着空格出现的非空格字符
{word=1;//表示是一个新的单词
num++;}//单词数num自加1,等价于num=num+1;
printf("There is %d words in the li