关于统计输入文本的单词个数,单词之间要用空格符,换行符,跳格符隔开
#include “stdio.h”
#define IN 1
#define OUT 0
main()
{ int n;
n=countword();
printf(“n=%d\n”,n);
}
countword()
{ int c, nw, st ate;
state=OUT;
nw=0;
while( (c=getcher()0!=EOF )
{ if(c==’ ‘或c==’\n’或c==’\t’ state=OUT;
else if(state==OUT)
{ state IN;
nw++;
}
}
return nw;
}
函数countword那段特别是while语句里的那段是什么意思啊?能不能帮我一句句讲一下?万分感激,兄弟!
还有“或”那两竖怎么打啊?找不到。。。的问题
countword()
{ int c, nw, st ate;
state=OUT;
nw=0;
while( (c=getcher()0!=EOF ) // 这里有个错,应该是 (c=getchar()), c被赋值为下个字符,整个while意思是如果下个字符不是EOF(end of file)即中止符, 那么while就一直运行。
{ if(c==’ ‘或c==’\n’或c==’\t’ state=OUT; //如果c的值是空格,新行符(new line), 或是tab, state被赋值为OUT
else if(state==OUT) //如果state是OUT
{ state IN; //又错了,应该是state=IN,
nw++; //nw=nw+1;
}
}
return nw; //返回nw的值
}
整个while的意思是,比如遇到 “i am here!” 这句
开始时state=out;nw=0;以下是c,s,nw的变化
time —————————————————–>
c i ‘ ‘ a m ‘ ‘ h e r e ! #
s out in out in in out in 。
。。。。
nw 0 1 1 2 2 2 3 。。。。。
关于或者的写法 就是后退键左边的那个,标有 | \ , 要按shift+这个键才行。