我们统计一列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;
}