请给这个程序加上注释 谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/24 18:32:43
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

程序如下:
#include <stdio.h>
void 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);
}

请给上面这个程序加上注释,特别是这一部分看不太懂

for(i=0;(c=str[i])!='\0';i++)
if(c=='') word=0;
else if(word==0)
{
word=1;
num++;
}

#include <stdio.h>
void 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) //如果当前字符不是空格,并且不在一个单词内,就判定是新单词的字符,单词数自加1
{
word=1;
num++;
}
printf("There are %d words in the line.\n",num);
}

分太少。。

for(i=0;(c=str[i])!='\0';i++) //在没有读到结尾的情况下每次读出一个字符
if(c==' ') word=0; //这句你原来程序错了,现在改了。是判断当前字符是否为空格' ',如果是空格,将word置为0
else if(word==0) //如果word是0则表示表示前一个字符是空格
{
word=1; //这时候要把标记改回来
num++; //单词计数加1
}

不过觉得这程序写的。。。

这程序不行!如果我输入“123456shshshshshss”的话,那么这个程序会输出1,但这样的输出结果你认为对吗?

好象不用那么复杂吧

觉得这样会比较好:
for(i=0;str[i]!='\0';i++)
最后直接输出i不就知道一行有几个字了吗

在读取的时候用while会比较好