C语言 绘制水平直方图

#include<stdio.h>#defineMAXHIST15/*maxlengthofhistogram*/#defineMAXWORD11/*maxlengtho... #include <stdio.h>

#define MAXHIST 15 /*max length of histogram*/
#define MAXWORD 11 /*max length of a word*/
#define IN 1 /*inside a word*/
#define OUT 0 /*outside a word*/

/*print horizontal histogram*/
void main()
{
int c,i,nc,state;
int len; /*length of each bar*/
int maxvalue; /*maximum value for wl[]*/
int ovflow; /*number of overflow words*/
int wl[MAXWORD]; /*word length counters */

state=OUT;
nc=0; /*number of chars in a word*/
ovflow=0; /*number of words >=MAXWORD*/
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;
nc=0;
}
else if(state==OUT)
{
state=IN;
nc=1; /*beginning of a new word*/
}
else
++nc; /*inside a word*/
}
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);
}

帮忙解释一下上面的程序,尤其是++wl[i];数组也能自加吗?这是怎么回事?
谢谢了!!!
最后那点也解释下啊,谢谢!
展开
 我来答
tjw408797664
推荐于2016-08-12 · TA获得超过1153个赞
知道小有建树答主
回答量:1042
采纳率:0%
帮助的人:718万
展开全部
#include <stdio.h>

#define MAXHIST 15 /*max length of histogram*/
#define MAXWORD 11 /*max length of a word*/
#define IN 1 /*inside a word*/
#define OUT 0 /*outside a word*/

/*print horizontal histogram*/
void main()
{
int c,i,nc,state;
int len; /*length of each bar*/
int maxvalue; /*maximum value for wl[]*/
int ovflow; /*number of overflow words*/
int wl[MAXWORD]; /*word length counters */

state=OUT;
nc=0; /*number of chars in a word*/
ovflow=0; /*number of words >=MAXWORD*/
for(i=0;i<MAXWORD;++i)
wl[i]=0; //初始化每个单词的长度为0
while((c=getchar())!=EOF) //从键盘获取字符串,并判断是否输入结束,结束应该是ctrl+z
{
if(c==' '||c=='\n'||c=='\t') //判断是否是一个单词(单词间都有间隔的)
{
state=OUT; //初始化状态为输出,表明这个单词已输入完成
if(nc>0) //判断这是不是一个单词
if(nc<MAXWORD)
++wl[nc]; //保存单词中字符的个数
else
++ovflow; //如果超过范围,则用ovflow保存字符数
nc=0;
}
else if(state==OUT) //如果上面的if不成立,则说明这个单词还没有输入完成
{
state=IN; //将状态设为IN,则表名这个单词没输入完成,还要继续输入。
nc=1; /*beginning of a new word*/
}
else //判断后面的字符是否是一个单词
++nc; /*inside a word*/
}
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);
}
//++wl[i];这个肯定可以的,wl[i]是一个数组变量,既然是个变量当然可以自增了。
创作者OgWCVK0A2N
2019-05-08 · TA获得超过3843个赞
知道大有可为答主
回答量:3191
采纳率:25%
帮助的人:249万
展开全部
#include
<stdio.h>
#define
MAXHIST
15
/*max
length
of
histogram*/
#define
MAXWORD
11
/*max
length
of
a
word*/
#define
IN
1
/*inside
a
word*/
#define
OUT
0
/*outside
a
word*/
/*print
horizontal
histogram*/
void
main()
{
int
c,i,nc,state;
int
len;
/*length
of
each
bar*/
int
maxvalue;
/*maximum
value
for
wl[]*/
int
ovflow;
/*number
of
overflow
words*/
int
wl[MAXWORD];
/*word
length
counters
*/
state=OUT;
nc=0;
/*number
of
chars
in
a
word*/
ovflow=0;
/*number
of
words
>=MAXWORD*/
for(i=0;i<MAXWORD;++i)
wl[i]=0;
//初始化每个单词的长度为0
while((c=getchar())!=EOF)
//从键盘获取字符串,并判断是否输入结束,结束应该是ctrl+z
{
if(c=='
'||c=='\n'||c=='\t')
//判断是否是一个单词(单词间都有间隔的)
{
state=OUT;
//初始化状态为输出,表明这个单词已输入完成
if(nc>0)
//判断这是不是一个单词
if(nc<MAXWORD)
++wl[nc];
//保存单词中字符的个数
else
++ovflow;
//如果超过范围,则用ovflow保存字符数
nc=0;
}
else
if(state==OUT)
//如果上面的if不成立,则说明这个单词还没有输入完成
{
state=IN;
//将状态设为IN,则表名这个单词没输入完成,还要继续输入。
nc=1;
/*beginning
of
a
new
word*/
}
else
//判断后面的字符是否是一个单词
++nc;
/*inside
a
word*/
}
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);
}
//++wl[i];这个肯定可以的,wl[i]是一个数组变量,既然是个变量当然可以自增了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
keyiwenwo
2009-12-28 · TA获得超过8871个赞
知道小有建树答主
回答量:993
采纳率:100%
帮助的人:1073万
展开全部
不是数组自加,是数组元素的值自加。

如果w[1]==5

++w[1],w[1]就等于6了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式