c语言函数例题

来源:百度知道 编辑:UC知道 时间:2024/06/16 13:57:53
#include "stdio.h"
#include "ctype.h"
int countword()
{int x=0,state=0;
char ch;
while((ch=getchar())!=EOF)
if(isspace(ch)) state=0;
else if(state==0)
{x++;
state=1;
}
return x;
}
main()
{int n;
n=countword();
printf("%d",n);
}
为什么else if(state==0)表示单词的第一个字母
为什么!isspace(ch)且state==0表示单词的第一个字母,state==0不是表示isspace,用==的用意是什么

当state等于0时,说明当时的位置为空格,如果碰到字符时就把x自加,一遇到空格就把state赋值为0。也就是空格对应state=0,有单词时对应state=1,它们两个相互交换来统计单词。

state记录前一个字符的状态,if(isspace(ch))则state=0,所以!isspace(ch)且state==0表示单词的第一个字母,即程序中else if(state==0)

其实 你如果先空格输入也行啊。
这条程序的主要特点是计入空格跟空格之间纪为一个单词,所以她找的是空格。
如ISSPACE.
而我们一般输入的是第一个单词没空格的。所以
第一步是执行else下面的

因为当遇到空格时stat就变成0了。空格之后出现一个字母,x就自加一次。