C基础:数组打印直方图

转载请注明出处:http://blog.csdn.net/droyon/article/details/9840409

1、数组测试:输出随机数(种子不唯一),统计随机数,打印直方图

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 50

#define boolean int
#define true 1
#define false 0

int a[N];


int main(void)
{
	gen_random(10, time(NULL));

	print_random();
    
    printf("*************统计直方图**************\n");

	int times[10] = { };
	print_random_and_times(times);
	return 0;
}

void gen_random(int upper_bound, int seed)
{
	srand(seed);//指定种子
	int i;
	for (i = 0; i < N; i++) {
		a[i] = (rand() % upper_bound);
	}
}

void print_random_and_times(int times[])
{
	int i, upper_bound = 10;
	for (i = 0; i < N; i++) {
//        printf("%d ,%d\t",a[i],times[a[i]]);
		++times[a[i]];
	}

	for (i = 0; i < upper_bound; i++) {
		printf("%d(%d)  \t", i, times[i]);
	}
	printf("\n");

	boolean isEnd = true;
	while (isEnd) {
		isEnd = false;
		for (i = 0; i < upper_bound; i++) {
			if ((times[i]--) > 0) {
				printf("%s  \t", "*");
				if (times[i] > 0)
					isEnd = true;
			} else {
				printf("%s  \t", " ");
			}
		}
		printf("\n");
	}
}

void print_random()
{
	int i;
	for (i = 0; i < N; i++) {
		printf("%d  \t", a[i]);
		if ((i + 1) % 5 == 0) {
			printf("\n");
		}
	}
}

打印:

7  	2  	2  	5  	2  	
4  	0  	2  	0  	4  	
3  	8  	2  	1  	5  	
6  	4  	0  	3  	6  	
1  	9  	2  	0  	0  	
6  	6  	3  	2  	8  	
3  	0  	2  	5  	7  	
6  	1  	0  	0  	1  	
4  	4  	1  	6  	7  	
8  	5  	3  	0  	8  	
*************统计直方图**************
0(9)  	1(5)  	2(8)  	3(5)  	4(5)  	5(4)  	6(6)  	7(3)  	8(4)  	9(1)  	
*  	*  	*  	*  	*  	*  	*  	*  	*  	*  	
*  	*  	*  	*  	*  	*  	*  	*  	*  	   	
*  	*  	*  	*  	*  	*  	*  	*  	*  	   	
*  	*  	*  	*  	*  	*  	*  	   	*  	   	
*  	*  	*  	*  	*  	   	*  	   	   	   	
*  	   	*  	   	   	   	*  	   	   	   	
*  	   	*  	   	   	   	   	   	   	   	
*  	   	*  	   	   	   	   	   	   	   	
*  	   	   	   	   	   	   	   	   	   	

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hailushijie

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值