设A、B、C是三个整数集合,每个集合中的元素数均在100以内。这里要求编写一个函数来实现A∩B的集合运算,运算结果存放在集合C中.
函数接口定义:
函数接口如下: void Intersection(int *A,int *B,int*C,int Asize,int Bsize,int *Csize);
在接口参数中A
,B
和C
是指向三个集合的指针,指针C
指向交集,Asize
,Bsize
和Csize
分别表示集合A
,B
和C
中的元素数,但是Csize
是一个指针类型的变量。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
/**你编写的函数将放在这**/
void display(int *T,int p)
{
int i;
printf("%d",p);
if(p>0)
{
for(i=0;i<p-1;i++)
printf(" %d",T[i]);
printf(" %d\n",T[i]);
}
}
void read(int *B,int size)
{
int i;
for(i=0;i<size;i++)
scanf("%d",&B[i]);
}
int main()
{
int a[100],b[100],c[200];
int m,n,o=0;
scanf("%d",&m);
read(a,m);
scanf("%d",&n);
read(b,n);
Intersection(a,b,c,m,n,&o);
display(c,o);
return 0;
}
输入样例:
输入分两行,每行的第一个数据表示对应集合中的元素数,后续数据为集合中的元素。每行各数据之间用空格分开。例如:
5 1 2 3 4 0
9 7 6 5 4 8 1 3 2 9
输出样例:
输出在一行内完成,第一个数据表示输出集合中的元素数,后续数据为集合中的元素。输出行首和行尾均均无空格。例如:
4 4 1 3 2
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
void Intersection(int *A, int *B, int *C, int Asize, int Bsize, int *Csize)
{
int i, j;
for (j = 0; j < Bsize; j++)
{
for (i = 0; i < Asize; i++)
{
if (A[i] == B[j])
C[(*Csize)++] = A[i];
}
}
}