69,369
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#define MAX 1000//最大输入个数
int bubbleSort(int *A,int len)//排序
{
int i,j,t;
for(i = 0;i < len-1;i++)
{
for(j = 0;j < len-i-1;j++)
{
if(A[j] > A[j+1])
{
t = A[j+1];
A[j+1] = A[j];
A[j] = t;
}
}
}
}
int bingji(int *A,int *B,int lenA,int lenB)//并集
{
int i,j;
int flag,index = lenB;
int *buffer = (int *)malloc(sizeof(int) * (lenA+lenB));
for(i = 0;i< lenA+lenB;i++)//初始化buffer空间。
{
buffer[i] = -1;
}
for(i = 0;i < lenB;i++)
{
buffer[i] = B[i];
}
for(i = 0;i < lenA;i++)
{
flag = 1;
for(j = 0;j < lenB;j++)
{
if(A[i] == B[j])
{
flag = 0;
}
}
if(flag)
{
buffer[index] = A[i];
index++;
}
}
bubbleSort(buffer,lenA+lenB);//排序
for(i = 0;i < lenA+lenB;i++)
{
if(buffer[i] != -1)
printf("%d ",buffer[i]);
}
printf("\n");
free(buffer);
}
int jiaoji(int *A,int *B,int lenA,int lenB)//交集
{
int i,j;
int flag,index = 0,len = lenA > lenB ? lenA:lenB;
int *buffer = (int *)malloc(sizeof(int) * len);
for(i = 0;i < lenA;i++)
{
flag = 0;
for(j = 0;j < lenB;j++)
{
if(A[i] == B[j])
flag = 1;
}
for(j = 0;j < index;j++)
{
if(A[i] == buffer[j])
flag = 0;
}
if(flag)
{
buffer[index] = A[i];
index++;
}
}
bubbleSort(buffer,index);//排序
for(i = 0;i< index;i++)
printf("%d ",buffer[i]);
printf("\n");
free(buffer);
}
int yuji(int *A,int *B,int lenA,int lenB)//余集
{
int i,j;
int flag,index = 0;
int *buffer = (int *)malloc(sizeof(int) * lenA);
for(i = 0;i < lenA;i++)
{
flag = 1;
for(j = 0;j < lenB;j++)
{
if(A[i] == B[j])
flag = 0;
}
if(flag)
{
buffer[index] = A[i];
index++;
}
}
bubbleSort(buffer,index);//排序
for(i = 0;i < index;i++)
printf("%d ",buffer[i]);
printf("\n");
free(buffer);
}
int main()
{
int a[MAX],b[MAX];//集合
int i = 0,m = 0,n = 0;
scanf("%d",&n);
for(i = 0;i < n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
for(i = 0;i < m;i++)
scanf("%d",&b[i]);
printf("\n");
jiaoji(a,b,n,m);//交集
bingji(a,b,n,m);//并集
yuji(a,b,n,m);//余集
return 0;
}