不多赘言。
#include <stdio.h>
#include <ctype.h>
int main(int argc, char const *argv[])
{
char ch,prev='\n';
int startWord = 0;
int wordlen=0; // 单个单词长度
int wordcount=0; // 总单词数量
int totallen=0; // 总单词长度
int avglen = 0;
while ( (ch = getchar())!= EOF ){
// printf("ch = %c , ispunct(%c) ==%d\n", ch,ch,ispunct(ch));
if ( isalpha(ch) && startWord ){
// startWord = 0;
wordlen += 1;
}
if ( isalpha(ch) && !startWord){
startWord = 1; // startWord now
wordlen = 1;
}
if( !isalpha(ch) && startWord && isalpha(prev) ){
wordcount +=1;
totallen += wordlen;
startWord =0;
// printf(" -------- 第 %d 个单词的长度是%d\n",wordcount,wordlen );
}
prev=ch;
}
printf("\n");
avglen = wordcount==0?0:totallen/wordcount;
printf("单词数量=%d , 单词总长度=%d ,单词平均长度=%d \n",wordcount,totallen,avglen);
return 0;
}
运行效果:
gcc -o ww words.c
./ww < article.txt单词数量=27 , 单词总长度=160 ,单词平均长度=5