标签:random rand ima temp man pre i++ 问题 排序算法
统计一列0-9的随机数,打印每个数字出现的次数,并用直方图的形式显示。
效果:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 20
#define R 10
int a[N];
void gen_random(int upper_bound)
{
int i;
srand(time(NULL));
for(i=0;i<N;i++)
a[i] = rand() % upper_bound;
}
int howmany(int value)
{
int count = 0, i;
for(i=0;i<N;i++)
if(a[i]==value)
++count;
return count;
}
int find_max(int p[])
{
int i, temp;
for(i=1;i<R;i++)
{
if(p[0]<p[i])
p[0]=p[i];
}
return p[0];
}
int main(void)
{
int i, j, max, histogram[R]={0};
gen_random(R);
//statistics
for(i=0;i<N;i++)
{
histogram[a[i]]++;
}
//raw data
printf("num\tfreq\t\n");
for(i=0;i<R;i++)
{
printf("%d\t%d\t\n", i, histogram[i]);
}
//find the maximum
max = find_max(histogram);
//histogram
printf("\nrandom histogram: \n");
for(i=0;i<R;i++)
printf("%d\t",i);
printf("\n");
for(j=0;j<max;j++)
{
for(i=0;i<R;i++)
{
if(histogram[i]>0)
{
printf("*\t");
histogram[i]--;
}else{
printf(" \t");
}
}
printf("\n");
}
return 0;
}
实际效果是除了0的统计外,一切正常。而0的数字输出正常,直方图输出始终跟随最大值。
debug了一会,始终找不出原因,所有功能都正常,结果却出错,很烦。
吃了口饭,重新梳理了思路,发现我刚开始的思路有问题,已知范围的情况下没必要排序数组的最大值,于是注释掉最大值代码,解决。
修改后的代码:Code
标签:random rand ima temp man pre i++ 问题 排序算法
原文地址:https://www.cnblogs.com/vilogy/p/12631601.html