用c语言求二维数组中各行间的交集及

二维数组每行保存着一个整数集合,共有5个集合,每个集合均包含5个元素。编写程序求出这五个集合的交集,以及交集中元素的个数。所谓交集是指由所有同时出现在这5个集合中的元素组成的集合。 五个集合分别为: {12,35,3,9,0},{2,35,9,12,1},{35,12,0,1,9},{4,90,35,9,12},{11,9,0,12,35}

定义一个两个数组求交集的函数,二维数组无非是将两个数组交集再循环与下一个数组求交集

#include <stdio.h>
void jj(int *a,int *b,int *c,int *n)
{
    int i,j,k=0;
    for(i=0;i<*n;i++)
        for(j=0;j<5;j++)
        {
            if(a[i] == b[j])
            {
                c[k++] = b[j];
                break;
            }
        }
    *n = k;
}

int main()
{
    int a[5][5] = {{12,35,3,9,0},{2,35,9,12,1},{35,12,0,1,9},{4,90,35,9,12},{11,9,0,12,35}};
    int b[5],i;
    int n = 5;
    for(i=0;i<4;i++)
    {
        if(i==0)
            jj(a[i],a[i+1],b,&n);
        else
            jj(b,a[i+1],b,&n);
    }    
    printf("%d\n",n);
    for(i=0;i<n;i++)
        printf("%d ",b[i]);
    return 0;
}

#include <stdio.h>
int main(void)
{ int a[5][5]= {{12,35,3,9,0},{2,35,9,12,1},{35,12,0,1,9},{4,90,35,9,12},{11,9,0,12,35}},i,j,k;
int b[5]= {12,35,3,9,0};
for(i=1; i <5; i++)
{ for(j=0; j <5; j++)
{ if(b[j]==-1) continue;
for(k=0; k <5; k++)
{
if(b[j]==a[i][k]) break;
}
if(k==5) b[j]=-1;
}
}
for(i=0; i <5; i++)
if(b[i]!=-1)
printf("%d ",b[i]);
return 0;
}