C语言程序设计第二版 1.6数组练习1-13打印输入中单词长度的直方图的问题 20

C语言程序设计第二版1.6数组练习1-13打印输入中单词长度的直方图的问题/*Note:YourchoiceisCIDE*/#include"stdio.h"#defin... C语言程序设计第二版 1.6数组练习1-13打印输入中单词长度的直方图的问题
/* Note:Your choice is C IDE */
#include "stdio.h"
#define MAXHIST 15 //柱状图长度
#define MAXWORD 11 //单词长度
#define IN 1
#define OUT 0
void main()
{
int c,i,nc,state;
int len;
int maxvalue; //wl[]的最大值
int ovflow;//溢出单词数
int wl[MAXWORD];//单词长度计数
state =OUT;
nc=0; //一个单词字符数目
ovflow=0; //超出单词长度的单词数

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;
}
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; //为什么要--len?
}
putchar('\n');
}
if(ovflow>0)
printf("there are %d words >=%d\n",ovflow,MAXWORD);

问题:1
if((len=wl[i]*MAXHIST/maxvalue)<=0)
len=1; 这段话表示什么意思?与下面的while语句有什么关系
问题:2
while(len>0)
{
putchar('*');
--len;
}这段话与上面的if((len=wl[i]*MAXHIST/maxvalue)<=0)有什么关系吗?
问题3:
为什么一定要求最大数值?且以此为标准?
for(i=1;i<MAXWORD;++i)
if(wl[i]>maxvalue)
maxvalue=wl[i];
}
展开
 我来答
花果山小猴zx
2016-05-14 · TA获得超过257个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:207万
展开全部
#includemain(){inta[10],i,temp;printf("inputtenintnumber:\n");///提示输入10个数for(i=0;i<=9;i++)///循环输入数组的下标从0开始,所以10个数的下标是从0-9scanf("%d",&a[i]);//输入for(i=0;i<=4;i++)//逆序,说白了就是第一个数和第10个数进行交换,第2个数和第9个数进行交换{temp=a[i];a[i]=a[9-i];a[9-i]=temp;}printf("afterreverved\n");//输出for(i=0;i<=9;i++)printf("%4d",a[i]);}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式