#include
int main(){
char str[100],c;
int i,n=0,word=0;
gets(str);
for(i=0;(str[i])!='\0';i++){
if(str[i]==' ') word=0;
else if(word==0){
word=1;
n++;
}
}
printf("这里有%d个单词\n", n);
return 0;
}
哪里矛盾了
看代码不能流于表面,你要看懂逻辑关系
word是个标识符,当它是0的时候,表示还没有开始读到一个单词,当它是1的时候,表示已经读到了一个单词还没有结束
那么一开始的时候word=0,就会走进else if里,如果读到的不是空格并且还没有读单词,就把它设置成1,那么现在开始读单词了
读单词的过程中,就一直读,不要乱++
当读到一个空格的时候,读单词结束,把word设置回0,然后继续读字符,继续判断
就是这样一个过程
就是说明这是一个空格分开的单词