C 打印输入中各个字符出现的频度的直方图

题目如标题。

目前还不是很懂,所以打上存疑标签待定。

输入hello之后效果截图,其实是很长的一串。

2014-02-21\_205028.png

#include <stdio.h>
#include <ctype.h>

#define MAXHIST 15
#define MAXCHAR 128

main(void)
{
    int c, i;
    int len;
    int maxvalue;
    int cc[MAXCHAR];

    for (i = 0; i < MAXCHAR; ++i)
        cc[i] = 0;
    while ((c = getchar()) != EOF)
        if (c < MAXCHAR)
            ++cc[c];
    maxvalue = 0;

    for(i = 1; i < MAXCHAR; ++i)
        if (cc[i] > maxvalue)
            maxvalue = cc[i];

    for (i = 1; i < MAXCHAR; ++i) {
        if (isprint(i))
            printf("%5d - %c - %5d : ", i, i, cc[i]);
        else
            printf("%5d -   - %5d : ",i, cc[i]);
        if (cc[i] > 0) {
            if ((len = cc[i] * MAXHIST / maxvalue) <= 0)
            len = 1;
        } else
            len = 0;
        while (len > 0) {
            putchar('*');
            --len;
        }
        putchar('\n');
    }

    return 0;
}

输出大致是:

    1 -   -     0 :
    2 -   -     0 :
    3 -   -     0 :
    4 -   -     0 :
    5 -   -     0 :
    6 -   -     0 :
    7 -   -     0 :
    8 -   -     0 :
    9 -   -     0 :
   10 -   -     1 : *******
   11 -   -     0 :
   12 -   -     0 :
   13 -   -     0 :
   14 -   -     0 :
   15 -   -     0 :
   16 -   -     0 :
   17 -   -     0 :
   18 -   -     0 :
   19 -   -     0 :
   20 -   -     0 :
   21 -   -     0 :
   22 -   -     0 :
   23 -   -     0 :
   24 -   -     0 :
   25 -   -     0 :
   26 -   -     0 :
   27 -   -     0 :
   28 -   -     0 :
   29 -   -     0 :
   30 -   -     0 :
   31 -   -     0 :
   32 -   -     0 :
   33 - ! -     0 :
   34 - " -     0 :
   35 - # -     0 :
   36 - $ -     0 :
   37 - % -     0 :
   38 - & -     0 :
   39 - ' -     0 :
   40 - ( -     0 :
   41 - ) -     0 :
   42 - * -     0 :
   43 - + -     0 :
   44 - , -     0 :
   45 - - -     0 :
   46 - . -     0 :
   47 - / -     0 :
   48 - 0 -     0 :
   49 - 1 -     0 :
   50 - 2 -     0 :
   51 - 3 -     0 :
   52 - 4 -     0 :
   53 - 5 -     0 :
   54 - 6 -     0 :
   55 - 7 -     0 :
   56 - 8 -     0 :
   57 - 9 -     0 :
   58 - : -     0 :
   59 - ; -     0 :
   60 - < -     0 :
   61 - = -     0 :
   62 - > -     0 :
   63 - ? -     0 :
   64 - @ -     0 :
   65 - A -     0 :
   66 - B -     0 :
   67 - C -     0 :
   68 - D -     0 :
   69 - E -     0 :
   70 - F -     0 :
   71 - G -     0 :
   72 - H -     0 :
   73 - I -     0 :
   74 - J -     0 :
   75 - K -     0 :
   76 - L -     0 :
   77 - M -     0 :
   78 - N -     0 :
   79 - O -     0 :
   80 - P -     0 :
   81 - Q -     0 :
   82 - R -     0 :
   83 - S -     0 :
   84 - T -     0 :
   85 - U -     0 :
   86 - V -     0 :
   87 - W -     0 :
   88 - X -     0 :
   89 - Y -     0 :
   90 - Z -     0 :
   91 - [ -     0 :
   92 - \ -     0 :
   93 - ] -     0 :
   94 - ^ -     0 :
   95 - _ -     0 :
   96 - ` -     0 :
   97 - a -     0 :
   98 - b -     0 :
   99 - c -     0 :
  100 - d -     0 :
  101 - e -     1 : *******
  102 - f -     0 :
  103 - g -     0 :
  104 - h -     1 : *******
  105 - i -     0 :
  106 - j -     0 :
  107 - k -     0 :
  108 - l -     2 : ***************
  109 - m -     0 :
  110 - n -     0 :
  111 - o -     1 : *******
  112 - p -     0 :
  113 - q -     0 :
  114 - r -     0 :
  115 - s -     0 :
  116 - t -     0 :
  117 - u -     0 :
  118 - v -     0 :
  119 - w -     0 :
  120 - x -     0 :
  121 - y -     0 :
  122 - z -     0 :
  123 - { -     0 :
  124 - | -     0 :
  125 - } -     0 :
  126 - ~ -     0 :
  127 -   -     0 :

植入部分

如果您觉得文章不错,可以通过赞助支持我。

如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。

标签: 成品, 源码, 题目, 存疑

添加新评论