C语言 统计数组每个元素个数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 统计数组每个元素个数相关的知识,希望对你有一定的参考价值。

用C语言产生100个随机数,作为一个数组,然后统计该数组中每个元素出现的次数,并输出,请教这个程序该如何写、

我没有随机种子函数,这样效果明显。所产生的随机数的范围你可以改变。
#include<stdio.h>
#include<stdlib.h>
main()

int a[100],b[100],c[100]=0,i,j;
//a数组放随机数
//b数组放是否被统计的标志,1未统计,0已统计
//c数组放对应a数组中随机数出现的次数
for(i=0;i<100;i++)

a[i]=rand()%21;//产生0~20的随机数
b[i]=1;//未统计
printf("%5d",a[i]); //打印a数组的值
if((i+1)%10==0) //一行打印10个数
printf("\n");

printf("\n");
for(i=0;i<100;i++)

if(b[i]) //若a[i]未被统计

c[i]++; //次数加1
for(j=i+1;j<100;j++)//从下一个开始向后查找
if(a[j]==a[i]) //若相等

c[i]++; //则次数增1
b[j]=0; //改为已统计



for(i=0,j=1;i<100;i++)

if(c[i]) //若某随机数出现了,则打印其值和出现次数
printf("%3d:%5d 出现 %3d次\n",j++,a[i],c[i]);

参考技术A void test()

srand((int)time(0));
int i, j;
int a[100];
for( i=0; i<100; i++)

a[i] = (int)(rand() * 10.0 / RAND_MAX); //随机数限定在0~10之间更能看出效果

//排序
for( i=0; i<99; i++)

for(j=i; j<100; j++)

if(a[i]> a[j])

int temp = a[i];
a[i] = a[j];
a[j] = temp;



//输出统计结果
i=0;
while(i<100)

int count =0;
int v = a[i];
while((v == a[i]) && i<100)

i++;
count++;

printf("%d 出现 %d 次\n", v, count);

参考技术B #include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define n 100

void main()

int i,j,t, a[n];

srand((unsigned)time(NULL));
for(i=0;i<n;i++)
a[i] = rand()%n;
for(i=0;i<n;i++)

for(j=0;j<n-i-1;j++)

if(a[j]>a[j+1])

t=a[j];
a[j]=a[j+1];
a[j+1]=t;



j=1;t=a[0];
for(i=1;i<n;i++)

if(t==a[i]) j++;
else

printf("%d出现%d次\n", t, j);
j=1;t=a[i];


printf("%d出现%d次\n", t, j);
参考技术C 用cnt加for循环?

以上是关于C语言 统计数组每个元素个数的主要内容,如果未能解决你的问题,请参考以下文章

C语言 随机数组排序

C语言中的一个编程问题

C语言问题 怎么做?

C语言中整型数组的每个元素在内存中是如何存放的

c语言:输入一行字符,统计其中的单词个数,单词之间用空格分开

C语言问题 把一个数组中的重复元素去掉