C语言统计相同数列的问题

[复制链接]
查看11 | 回复0 | 2009-1-30 06:28:38 | 显示全部楼层 |阅读模式
如果说有一个数组a[]={1,1,1,2,2,3,3,3,4,4,4,4,4} 如何统计出相同元素的个数?并找出元素最多,和元素最小的个数及他的元素, 我的思路是让两个数比较,如果相等,让统计个数的变量加1,(个数从1开始),然后不相等时,返回统计的变量,然后,重新将统计变量回归1再统计。这梓一来,只能统计出一个元素的值,其他就错了,其余的两问,更无法成,请问,这题的思路和程序代码是什么

                                                                                                你可以定4个int变量如int n1=0,n2=0,n3=0,n4=0;在循环里,如果=1,n1++是=2,n2++...                                       
提问者对答案的评价:

                                                                                                基本思路:a要统计的数组,b保存每类元素的不重复元素,c保存每类元素统计个数,b和c的下标要求同步。d,e最大和最小元素个数所包括的具体类型。首先循环遍历a数组的每个元素,与b数组每个元素进行判断,如果相同,则类型相同,增加统计个数,否则,增加新的元素类型。假定,要统计的数组元素不包括0,数组初始化都是0。main(){int a[100]={1,1,1,2,2,3,4,4,6,6,6,6,6,6,1,1,1,1,9,9,9,11};int b[100]={0},c[100]={0},d[100]={0},e[100]={0};int i,j,k=0,m=0,n=0,max=0,min=32767;/*遍历a数组,统计每类元素的个数*/for(i=0;i<100;i++)for( j=0;j<100;) if(a==b[j] && a != 0 && j != 100)
{
b[j]=a;
c[j]++;
break;
}
else
{ j++;
if(j == 100 && a != 0 ||( i==0 && j==0 ))
{
b[k]=a;
c[k]++;
k++;
}
} /*循环得到max,min值*/ for(i=0;i<100;i++) {
if(c>=max) max = c;
if(c<=min && c>0) min = c;
} /*循环得到相同最大和相同最小的元素*/ for(i=0;i<100;i++) {
if(c==max)
d[m++]=b;
if(c==min)
e[n++]=b; } /*输出最大,最小及相关元素*/ printf("\\nmax=%d element is:",max); for(i=0;i<100;i++) {
if(d==0) break;
printf("%d ",d);
} printf("\\nmin=%d element is:",min); for(i=0;i<100;i++) {
if(e==0) break;
printf("%d ",e);
} getch();}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行