#include<stdio.h>
#define MAX1 7
#define MAX2 4
void display(int a[],int n)//输出数组元素
{
printf("\n");
for(int i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
void intersection(int a[],int n,int b[],int m)//求数组a[]与数组b[]的交集
{
int c[MAX1+MAX2];//定义一个n+m长的数组用c[]来存储交集元素
int i,j,jj;//循环控制变量
i=0;
for(jj=0;jj<m;jj++)//进行筛选
{
int flag=0;
for(j=0;j<n;j++)
{if(b[jj]==a[j]){flag=1;break;}
}
if(flag)c[i++]=b[jj];
}
printf("交集: ");
display(c,i);//将交集数列输出
}
void main()
{
int a[MAX1]={9,5,8,6,7,0,1};//举例子
int b[MAX2]={10,4,5,6};//举例子
intersection(a,MAX1,b,MAX2);//调用交集运算函数
}
display方法是输出数组的内容。
intersection方法是求交集,
2个数组都有的元素就是交集,然后保存到数组c。
if(b[jj]==a[j])
主要的注释都加上了,for循环逻辑不清楚的?
#include<stdio.h>
#define MAX1 7
#define MAX2 4
void display(int a[],int n)//定义输出结果的方法,输出数组元素
{
printf("\n");
for(int i=0;i<n;i++) //遍历数组,输出每一个元素,元素之间用空格隔开
printf("%d ",a[i]);
printf("\n");
}
void intersection(int a[],int n,int b[],int m)//求数组a[]与数组b[]的交集
{
int c[MAX1+MAX2];//定义一个n+m长的数组用c[]来存储交集元素
int i,j,jj;//循环控制变量
i=0;
for(jj=0;jj<m;jj++)//遍历数组b的每一个元素
{
int flag=0;//定义一个标识符变量,用来判断是否找到了相同的元素
for(j=0;j<n;j++) //遍历数组a中的每一个元素
{if(b[jj]==a[j]){flag=1;break;} //取出数组a中每一个元素与当前数组b的元素进行比较,如果相等,则flag=1
}
if(flag)c[i++]=b[jj];//如果flag=1,则说明当前元素同时存在于数组a,b中,将其存放在数组c中。
}
printf("交集: ");
display(c,i);//将交集数列输出
}
void main()
{
int a[MAX1]={9,5,8,6,7,0,1};//举例子
int b[MAX2]={10,4,5,6};//举例子
intersection(a,MAX1,b,MAX2);//调用交集运算函数
}