我们统计一列0~9的随机数,打印每个数字出现的次数,像这样的统计结果称为直方图(Histogram),以可视化的形式打印直方图。例如统计20个随机数的结果是:
0 1 2 3 4 5 6 7 8 9
* * * * * * * *
* * * * * * *
* * *
*
*
对于这样的一个题目,首先想到的肯定是要用到数组,那么具体的代码怎么是现呢?代码如下:
#include<stdio.h> #include<stdlib.h> #include<time.h> #define N 20 int a[N]; void gen_random(int upper_bound) { srand((int)time(NULL)); int i; for(i=0;i<N;i++){ a[i] = rand() % upper_bound; } } int main(void) { int i,j,k,l,histogram[10] = {0}; gen_random(10); for(i=0;i<N;i++) histogram[a[i]]++; for(j=0;j<10;j++) printf("%d\t",j); printf("\n"); for(l=0;l<N;l++){ for(k=0;k<10;k++){ if(histogram[k]>0){ printf("*\t"); histogram[k]--; } else{ printf(" \t"); } } printf("\n"); }; return 0; }