第8章:数组
3. 数组应用实例:直方图
习题:1、补完本节直方图程序的main函数,以可视化的形式打印直方图。例如上一节统计20个随机数的结果是:
#include <stdio.h>
#include <stdlib.h>
#define N 20 //预处理 N替换成它的定义20
int a[N];
void gen_random(int upper_bound){
int i;
for(i=0;i < N;i++){
a[i] = rand() % upper_bound;
}
}
int main(void){
int i,j, histogram[10] = {0};//不足的部分自动补0
//生成随机数组
gen_random(10);
//统计随机数组中0-9数字出现的个数
for(i=0;i<N;i++)
++histogram[a[i]];
//打印统计结果
printf("value\thow_many\n");
for(i=0;i<10;i++){
printf("%d\t%d\n",i,histogram[i]);
}
printf("\n");
//打印直方图
for(i=0;i<10;i++)
printf("%d\t",i);
printf("\n");
for(j=0;j<N;j++){
for(i=0;i<10;i++){
if(histogram[i] > 0){
printf("*\t");
histogram[i]--;
}else{
printf(" \t");
}
}
printf("\n");
}
return 0;
}