首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

!看不懂这个直方图

2012-03-09 
求救!看不懂这个直方图问题是让编写一个程序,打印其输入的文件中单词长度的直方图。以下是横条的直方图的编

求救!看不懂这个直方图
问题是让编写一个程序,打印其输入的文件中单词长度的直方图。

以下是横条的直方图的编写程序。但是直方图我看不懂横轴和竖轴各代表什么?就是我读不懂这个直方图!大侠帮解答一下!~

#include <stdio.h>

#define MAXWORDLEN 10

int main(void)
{
  int c;
  int inspace = 0;
  long lengtharr[MAXWORDLEN + 1];
  int wordlen = 0;

  int firstletter = 1;
  long thisval = 0;
  long maxval = 0;
  int thisidx = 0;
  int done = 0;

  for(thisidx = 0; thisidx <= MAXWORDLEN; thisidx++)
  {
  lengtharr[thisidx] = 0;
  }

  while(done == 0)
  {
  c = getchar();

  if(c == ' ' || c == '\t' || c == '\n' || c == EOF)
  {
  if(inspace == 0)
  {
  firstletter = 0;
  inspace = 1;

  if(wordlen <= MAXWORDLEN)
  {
  if(wordlen > 0)
  {
  thisval = ++lengtharr[wordlen - 1];
  if(thisval > maxval)
  {
  maxval = thisval;
  }
  }
  }
  else
  {
  thisval = ++lengtharr[MAXWORDLEN];
  if(thisval > maxval)
  {
  maxval = thisval;
  }
  }
  }
  if(c == EOF)
  {
  done = 1;
  }
  }
  else
  {
  if(inspace == 1 || firstletter == 1)
  {
  wordlen = 0;
  firstletter = 0;
  inspace = 0;
  }
  ++wordlen;
  }
  }

  for(thisval = maxval; thisval > 0; thisval--)
  {
  printf("%4d | ", thisval);
  for(thisidx = 0; thisidx <= MAXWORDLEN; thisidx++)
  {
  if(lengtharr[thisidx] >= thisval)
  {
  printf("* ");
  }
  else
  {
  printf(" ");
  }
  }
  printf("\n");
  }
  printf(" +");
  for(thisidx = 0; thisidx <= MAXWORDLEN; thisidx++)
  {
  printf("---");
  }
  printf("\n ");
  for(thisidx = 0; thisidx < MAXWORDLEN; thisidx++)
  {
  printf("%2d ", thisidx + 1);
  }
  printf(">%d\n", MAXWORDLEN);

  return 0;
}





Here's the output of the program when given its own source as input: 
 113 | *  
 112 | *  
 111 | *  
 110 | *  
 109 | *  
 108 | *  
 107 | *  
 106 | *  
 105 | *  
 104 | *  
 103 | *  
 102 | *  
 101 | *  
 100 | *  
  99 | *  
  98 | *  
  97 | *  


  96 | *  
  95 | *  
  94 | * *  
  93 | * *  
  92 | * *  
  91 | * *  
  90 | * *  
  89 | * *  
  88 | * *  
  87 | * *  
  86 | * *  
  85 | * *  
  84 | * *  
  83 | * *  
  82 | * *  
  81 | * *  
  80 | * *  
  79 | * *  
  78 | * *  
  77 | * *  
  76 | * *  
  75 | * *  
  74 | * *  
  73 | * *  
  72 | * *  
  71 | * *  
  70 | * *  
  69 | * *  
  68 | * *  
  67 | * *  
  66 | * *  
  65 | * *  
  64 | * *  
  63 | * * *  
  62 | * * *  
  61 | * * *  
  60 | * * *  
  59 | * * *  
  58 | * * *  
  57 | * * *  
  56 | * * *  
  55 | * * *  
  54 | * * *  
  53 | * * *  
  52 | * * * *  
  51 | * * * *  
  50 | * * * *  
  49 | * * * *  
  48 | * * * *  
  47 | * * * *  
  46 | * * * *  
  45 | * * * *  
  44 | * * * *  
  43 | * * * * *  
  42 | * * * * *  
  41 | * * * * *  
  40 | * * * * *  
  39 | * * * * *  
  38 | * * * * *  
  37 | * * * * *  
  36 | * * * * *  
  35 | * * * * *  
  34 | * * * * *  
  33 | * * * * *  
  32 | * * * * *  
  31 | * * * * *  
  30 | * * * * * *  
  29 | * * * * * *  
  28 | * * * * * * *  
  27 | * * * * * * *  


  26 | * * * * * * *  
  25 | * * * * * * * *  
  24 | * * * * * * * *  
  23 | * * * * * * * *  
  22 | * * * * * * * * *  
  21 | * * * * * * * * *  
  20 | * * * * * * * * *  
  19 | * * * * * * * * *  
  18 | * * * * * * * * *  
  17 | * * * * * * * * *  
  16 | * * * * * * * * *  
  15 | * * * * * * * * *  
  14 | * * * * * * * * * *  
  13 | * * * * * * * * * *  
  12 | * * * * * * * * * *  
  11 | * * * * * * * * * *  
  10 | * * * * * * * * * *  
  9 | * * * * * * * * * * *  
  8 | * * * * * * * * * * *  
  7 | * * * * * * * * * * *  
  6 | * * * * * * * * * * *  
  5 | * * * * * * * * * * *  
  4 | * * * * * * * * * * *  
  3 | * * * * * * * * * * *  
  2 | * * * * * * * * * * *  
  1 | * * * * * * * * * * *  
  +---------------------------------
  1 2 3 4 5 6 7 8 9 10 >10



[解决办法]
横轴代表0~10各单位,数轴代表每个单位的值。可以认为在x条件下y的变化。
能用程序写出来也挺累的。
[解决办法]
就这个输出来看,应该是:
长度为 1 的单词有 113个
长度为 2 的单词有 94个
长度为 3 的单词有 63 个
长度为 4 的单词有 52 个
长度为 5 的单词有 28 个
长度为 6 的单词有 25 个
长度为 7 的单词有 43 个
长度为 8 的单词有 14 个
长度为 9 的单词有 9 个
长度为 10的单词有 22 个
长度 >10 的单词有 30 个

热点排行