声明一个较大的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;
}
运行样例如下图: