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语言 统计数组每个元素个数的主要内容,如果未能解决你的问题,请参考以下文章