二维数组每行保存着一个整数集合,共有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;
}