C程序设计语言练习题1-14

练习1-14  编写一个程序,打印输入中各个字符出现频度的直方图。

代码如下:

#include <stdio.h>    //    包含标准库的信息。

int main()    //    定义名为main的函数,它不接受参数值。
{
    printf("======打印输入字符频度的直方图======
");
    unsigned int ws[128];    //    字符频度数组。
    int i, j, c;
    i = j = c = 0;
    //    默认每个字符出现0次。
    for (i = 0; i < 128; i++)
    {
        ws[i] = 0;
    }

    while ((c = getchar()) != EOF)
    {
        //    进行字符匹配,如果匹配到字符频度就+1;
        for (i = 0; i < 128; i++)
        {
            if (i == c) {
                ws[i] += 1;
                break;
            }
        }
    }

    //    显示水平直方图。
    for (i = 0; i < 128; i++)
    {
        if (ws[i] > 0 && i != '	' && i != '
' && i != ' ')
        {
            printf("%c:", i);
            for (j = 0; j < ws[i]; j++) {
                printf("*");
            }
            printf("
");
        }
    }

    getchar();    //    防止控制台一闪而过,需要接受任意字符后在关闭控制台。
    return 0;    //    向执行环境返回一个整形,0代表执行成功。
}

个人理解:

主要是加深对数组操作的理解。

原文地址:https://www.cnblogs.com/DeadGardens/p/4780330.html