首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个调试无错的C程序,打印不出输入中单词长度的直方图,该怎么解决

2012-03-31 
一个调试无错的C程序,打印不出输入中单词长度的直方图#include stdio.h#define MAXLIST 15/*直方图的最

一个调试无错的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);
}


[解决办法]

探讨

引用:

你准备如何跳出循环呢?

这里循环有好多个,是哪个跳不出来?

热点排行