声明一个较大的char型数组,待输入完成后依次检查数组元素,除第一个单词可能需要个别处理外,其余以空格后跟字母或其它字符后跟字母的就认为是一个单词,累加计数即可。代码如下:
int main(int argc,char *argv[]){
char text[300];//定义一个空间较大的char数组存放输入的text
int i,w;
printf("Input a text...\n");
fgets(text,300,stdin);//用fgets既可接收空格又能限制长度
w=text[0]>='a' && text[0]<='z' || text[0]>='A' && text[0]<='Z';//开头是字母则w置1
for(i=1;text[i];i++)
if((text[i]>='a' && text[i]<='z' || text[i]>='A' && text[i]<='Z')
&& !(text[i-1]>='a' && text[i-1]<='z' || text[i-1]>='A' && text[i-1]<='Z'))
w++;//非字母后跟着字母则为一个单词
printf("A total of %d word(s).\n",w);
return 0;
}
运行样例如下图: