汇编网首页登录博客注册
assumechen的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
文章收藏
友情链接

[2013-10-31 17:36] 实现打印直方图

题意要求: 把整型数组中的统计的计数信息用直方图的形式打印出来.

要实现打印直方图, 我现在想到的思路如下:
1. 遍历数组, 把值大于0的打印一个符号出来
2. 重复第一步, 一直到数组的值全部等于0为止.

但是到要实现第二步的终止条件,我们可以通过比较来获取得最大的循环次数. 我这里是通过与的方式来实现的, 当数组某个下标的值等于0时,就与上0XFFFF.这样当数组的值全为0时,就可以退出循环了.代码如下:
/*
 * *a: 存储统计信息的数组
 * len: 数组的长度
 * sign: 要打印的符号
 */
void print_histogram(int *a, int len, char sign)
{
        int i, j, z;

        for (j=0; j<len; j++)
        {
                printf("%d   ", j);
        }
        printf("\n");

        z = 1023;
        do
        {
                for (i=0; i<len; i++)
                {
                        if (a[i] > 0)
                        {
                                printf("%c   ", sign);
                                a[i]--;
                        }
                        else
                        {
                                z = z & ~(((int)pow(2, i)));
                                printf("    ");
                        }
                }
                printf("\n");
        }
        while (z != 0);
}
评论次数(0)  |  浏览次数(451)  |  类型(The C Program Langua) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码