一个调试无错的C程序,打印不出输入中单词长度的直方图
#include <stdio.h>
#define MAXLIST 15 /*直方图的最大高度*/
#define MAXWORD 11 /*最大的单词长度*/
#define IN 1 /*在单词中*/
#define OUT 0 /*在单词外*/
main()
{
int maxvalue,ovflow,nc,i,c,state,j; /*maxvalue算出最大字符的单词,ovflow超出最大字符的单词,nc统计一个单词的字符数*/
int wl[MAXWORD]; /*单词长度数组,用于储存某个长度单词的个数*/
state=OUT;
nc=0;
ovflow=0;
for (i=1;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;
nc=0;
}
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=MAXLIST;i>0;--i){
for(j=1;j<MAXWORD;++j)
if (wl[j]*MAXLIST/maxvalue>=i)
printf("*");
else
printf(" ");
putchar('\n');
}
for(i=1;i<MAXWORD;++i)
printf("%4d",i);
putchar('\n');
for(i=1;i<MAXWORD;++i)
printf("%4d",wl[i]);
putchar('\n');
printf("尚有%d个溢出的单词",ovflow);
}
[解决办法]