| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2036 人关注过本帖
标题:C语言程序设计第二版 1.6数组练习1-13打印输入中单词长度的直方图的问题
只看楼主 加入收藏
花开不败yyq
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-5-14
收藏
 问题点数:0 回复次数:1 
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];
}


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

[此贴子已经被作者于2016-5-14 18:00编辑过]

搜索更多相关主题的帖子: 程序设计 include choice 直方图 C语言 
2016-05-14 15:59
花开不败yyq
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-5-14
收藏
得分:0 
求各位帮帮忙谢谢!!
2016-05-14 16:57
快速回复:C语言程序设计第二版 1.6数组练习1-13打印输入中单词长度的直方图的问 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.061766 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved