题头的话:长按点赞可私我赠送50+本C与C++书籍电子书资源
求两组整数的交集
【问题描述】
读入两组整数(每组不超过20个整数,并且同一组中的整数各不相同),编程求两组整数的交集,即在两组整数中都出现的整数,并按从大到小的顺序输出。若交集为空,则什么都不输出。
【输入形式】
先输入第一组整数的个数,然后在下一行输入第一组整数;然后再以同样的方式输入第二组整数。
【输出形式】
按从大到小顺序输出两组整数的交集(每个整数占6位,即按%6d格式输出每个整数)。
【样例输入】
8
5 -105 0 4 32 -87 9 -60
7
5 2 87 10 -105 0 32
【样例输出】
32 5 0 -105
【样例说明】
第一组整数有8个,第二组整数有7个,在这两组整数中都出现的整数有4个,按从大到小顺序排序后输出的结果为:32 5 0 -105
#include <stdio.h>
int main()
{
int a[120],b[120],c[120],i,j,k=-1,x,y,t;
scanf("%d",&x);
for(i=0;i<x;i++)
scanf("%d",&a[i]);
scanf("%d",&y);
for(i=0;i<y;i++)
scanf("%d",&b[i]);
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
if(a[i]==b[j])
{
k++;
c[k]=a[i];
break;
}
}
}
for(i=0;i<k;i++)
for(j=0;j<k;j++)
{
if(c[j]<c[j+1])
{
t=c[j];
c[j]=c[j+1];
c[j+1]=t;
}
}
for(i=0;i<=k;i++)
printf("%6d",c[i]);
return 0;
}