这个程序我有点看不懂,请大家指点一下
法号老鸭 2011-12-11 08:37:14 题目是:编写一个程序,打印输入中单词长度的直方图和垂直方向的直方图
程序如下:
#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()) != '#')
{
if(c== ' ' || c== '\n' || c== '\t')
{
if(state = IN)
{
state = OUT;
if(nc > 0)
{
if(nc < MAXWORD)
wl[nc]++;
else
ovflow++;
}
}
}
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);
return 0;
}