输入一行字符,统计其中的单词的个数,单词之间以单个空格作为分隔符
main()
{
char str[81];
int i,num=0,word=0;
char c;
gets(str);
for(i=0;(c=str[i])!='\0';i++)
if(c==' ') word=0;
else if(word==0)
{
word=1;
num++;
}
printf("There are %d words in the line.\n",num);
}
我没弄明白if 和 else if 以及里面的表达式的意义;
当c为空格的时候 我能理解代表前面有一个字符了 但是为啥是word=0而不是word=1 原因难道是数组从0开始么?
然后接着else if(word==0)进行判断。因为前面如果if符合了 word=0了 elseif也就能继续执行 所以word=1? 这就为啥word=0又变成等于1了
word是个标识,用它来表示一个单词是否结束,0表示结闷掘束,1表示开始,当缓橡word为0时,读到下一个非空格字符的时候,表示一个扰罩旁单词开始,word置1,一直读到下一个空格为止,word置0,表示一个单词结束。
if(...)
{
...
}
else if(...)
{
...
}
和态稿和敬段
if(...)
{
...
}
else
{
if(...)
{
...
}
}
一个意思帆盯
word=1是为了使第二次判断的时候不直接滚友跳进耐运else if判断语句中,昌备梁 而是需要先满足if(c==' '),如果满足则执行else if中,表示有字符,计数器自加1。