主题:这段代码看不懂,高手指教啊,主要是蓝色那段不懂
#include<stdio.h>
#define MAXHIST 15 //max length of histogram
#define MAXWORD 11 //一个单词的最大长度
#define IN 1 //当前字符处于单词中
#define OUT 0 //当前字符不在单词中
void main()
{
int c,i,j,nc,state;
int maxvalue; //数组w1中的最大值
int over; //长度大于或等于maxword的单词个数
int wl[MAXWORD]; //单词长度计数器
state=OUT;
nc=0; //单词中字符的数目
over=0;
for(i=0;i<MAXWORD;++i)
wl[i]=0;
while ((c=getchar())!=EOF)
{
if(c==' '||c=='\t'||c=='\n')
{
state=OUT;
if(nc>0)
if(nc<MAXWORD)
++wl[nc]; //长度为nc的单词数目加1
else
++over; //长度超出范围的单词数目加1
nc=0; //刷新nc的值,使下个单词的初始长度为0
}
else if(state==OUT)
{
state=IN;
nc=1; //新单词开始了,并使其初始长度为1
}
else ++nc;
}
[color=000080]maxvalue=0;
for(i=1;i<MAXWORD;++i)
if(wl[i]>maxvalue)
maxvalue=wl[i];
for(i=MAXHIST;i>0;--i)
{
for(j=1;j<MAXWORD;++j)
if((wl[j]*MAXHIST/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');[/color] if(over>0)
printf("有%d个单词长度超过给定范围\n\n",over);
}
#define MAXHIST 15 //max length of histogram
#define MAXWORD 11 //一个单词的最大长度
#define IN 1 //当前字符处于单词中
#define OUT 0 //当前字符不在单词中
void main()
{
int c,i,j,nc,state;
int maxvalue; //数组w1中的最大值
int over; //长度大于或等于maxword的单词个数
int wl[MAXWORD]; //单词长度计数器
state=OUT;
nc=0; //单词中字符的数目
over=0;
for(i=0;i<MAXWORD;++i)
wl[i]=0;
while ((c=getchar())!=EOF)
{
if(c==' '||c=='\t'||c=='\n')
{
state=OUT;
if(nc>0)
if(nc<MAXWORD)
++wl[nc]; //长度为nc的单词数目加1
else
++over; //长度超出范围的单词数目加1
nc=0; //刷新nc的值,使下个单词的初始长度为0
}
else if(state==OUT)
{
state=IN;
nc=1; //新单词开始了,并使其初始长度为1
}
else ++nc;
}
[color=000080]maxvalue=0;
for(i=1;i<MAXWORD;++i)
if(wl[i]>maxvalue)
maxvalue=wl[i];
for(i=MAXHIST;i>0;--i)
{
for(j=1;j<MAXWORD;++j)
if((wl[j]*MAXHIST/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');[/color] if(over>0)
printf("有%d个单词长度超过给定范围\n\n",over);
}