编写一个程序,打印输入中单词长度的直方图
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); }