main()
{
char st[80];
int i, num=0, word=0;
char c;
gets(st);
for (i=0; (c=st[i])!='\0'; i++)
if(c=='')
word=0;
else if(word==0)
{
word=1;
num++;
}
printf("there are %d words in the line\n", num);
} 这道题是统计出输出的有多少个单词....
我是在WIN-TC下运行的.我输出了几次不同单词,但是怎么输,答案都是1个单词 ...是为什么???
else if(word==0)
{
word=1;
num++; 这个地方我也有点没通.....请高手指点一下.....能不能给我讲解清楚
谢谢!!!!
----------------解决方案--------------------------------------------------------
先看第一次循环,要是第一个字符是空格,那么word=0 那以后碰到非空格字符才会执行else if{}里的代码,执行完后word=1
接下来要是碰到非空格字符那么不执行if 这句代码,也不执行else if{}(word==0 不满足) ,所以除非再遇到空格,才会有
word=0 ,下一字符...........循环了吧
第一次循环碰到的就是非空格字符的情况和上面的类似
----------------解决方案--------------------------------------------------------
有一个错误,if(c=='')这里两个单引号中间差了一个空格.补上去就可以了.
----------------解决方案--------------------------------------------------------
先看第一次循环,要是第一个字符是空格,那么word=0 那以后碰到非空格字符才会执行else if{}里的代码,执行完后word=1
接下来要是碰到非空格字符那么不执行if 这句代码,也不执行else if{}(word==0 不满足) ,所以除非再遇到空格,才会有
word=0 ,下一字符...........循环了吧
第一次循环碰到的就是非空格字符的情况和上面的类似
同意,,佩服哟..
解释得这么详细..
----------------解决方案--------------------------------------------------------
那结果为什么怎么输入都是1个单词呢????
----------------解决方案--------------------------------------------------------
为什么?看3楼
----------------解决方案--------------------------------------------------------
#include <stdio.h>
int main(void){
char st[80];
int i, num=0, word=0;
char c;
gets(st);
for (i=0; (c=st[i])!='\0'; i++)
if(c==' ')
word=0;
else if(word==0){
word=1;
num++;
}
printf("there are %d words in the line\n", num);
}
不就是个''的问题嘛...
----------------解决方案--------------------------------------------------------