编写一个程序,打印输入中单词长度的直方图
k&r里面的打印单词的长度直方图。尼玛在第一个while循环就是死循环,在网上一搜索全是这样的代码。难道是我的问题。。。
程序代码:#include <stdio.h>
#define MAXHIST 15
#define MAXWORD 11
#define IN 1
#define OUT 0
main()
{
int c,i,nc,state;
int len;
int maxvalue;
int ovflow;
int wl[MAXWORD];
state=OUT;
nc=0;
ovflow=0;
for(i=0;i<MAXWORD;++i)
wl[i]=0;
while((c=getchar())!=EOF){
if(c==' '||c=='\n'||c=='\t'){
state=OUT;
if(nc>0){
if(nc<MAXWORD)
++wl[nc];
else
++ovflow;
}
//printf("%d,%d\n",nc,wl[nc]);
}
else if(state==OUT){
state=IN;
nc=1;
}
else
++nc;
}
maxvalue=0;
for(i=1;i<MAXWORD;++i){
if(wl[i]>maxvalue){
maxvalue=wl[i];
}
}
for(i=1;i<MAXWORD;++i){
printf("%5d-%5d:",i,wl[i]);
if(wl[i]>0){
if((len=wl[i]*MAXHIST/maxvalue)<=0){
len=1;
}
}
else
len=0;
while(len>0){
putchar('*');
--len;
}
putchar('\n');
}
if(ovflow>0)
printf("There are %d words >= %d\n",ovflow,MAXWORD);
}









