花花更健康 2016-05-14 08:53 采纳率: 0%
浏览 1359
已结题

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 if(wl[i]>maxvalue)
maxvalue=wl[i];
}

求各位帮个忙解答疑惑!!!谢谢!!!

  • 写回答

3条回答 默认 最新

  • 花花更健康 2016-05-14 09:06
    关注

    木有人帮帮忙吗?谢谢

    评论

报告相同问题?

悬赏问题

  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样