集合的交并差
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
#define NUMBER1 7
#define NUMBER2 5
void collection(int Exple[], int);
void showElem(int Exple[], int);
int colCut_A_B(int A[],int B[],int C[], int, int);
int colCross_A_B(int A[], int B[], int C[], int, int);
int sum_A_B(int A[], int B[], int C[], int, int);
void menu()
{
printf("1---输入集合A和B\n");
printf("2---求集合A交B\n");
printf("3---求集合A并B\n");
printf("4---求集合A-B\n");
printf("退出,输入一个负数!\n");
}
int main()
{
srand((unsigned)time(NULL));
int A[NUMBER1] = { 0 };
int B[NUMBER2] = { 0 };
int C[NUMBER1 + NUMBER2] = { 0 };
int D[NUMBER1] = { 0 };
int E[NUMBER1] = { 0 };
int option = 0;
while (true)
{
menu();
printf("请输入你要进行的操作:");
scanf("%d", &option);
if (option >= 0)
{
switch (option)
{
case 1:
{
collection(A, NUMBER1);
showElem(A, NUMBER1);
collection(B, NUMBER2);
showElem(B, NUMBER2);
}
break;
case 2:
{
int num=colCross_A_B(A, B, C, NUMBER1, NUMBER2);
printf("\n求得交集的结果为:");
showElem(C, num);
}
break;
case 3:
{
int num = sum_A_B(A, B, C, NUMBER1, NUMBER2);
printf("\n求得并集的结果为:");
showElem(C, num);
}
break;
case 4:
{
int num = colCut_A_B(A, B, C, NUMBER1, NUMBER2);
printf("\n求得相对补(-)的结果为:");
showElem(C, num);
}
break;
default:
printf("请输入1-4的数字\n");
}
}
else{
printf("程序退出成功\n");
exit(0);
}
}
return 0;
}
void collection(int Exple[], int num)
{
int flag = 0, value = 0, i, j;
for (i = 0; i < num; i++)
{
flag = 1;
while (flag)
{
value = 1 + rand() % 10;
for (j = 0; j <= i; j++)
{
if (i == 0)
{
flag = 0;
break;
}
if (value == Exple[j])
break;
if (value != Exple[j] && j == i - 1)
{
flag = 0;
break;
}
}
Exple[i] = value;
}
}
}
void showElem(int Exple[], int num)
{
for (int i = 0; i < num; i++)
{
printf("%d ", Exple[i]);
}
printf("\n");
}
int colCut_A_B(int A[], int B[], int C[], int num1, int num2)
{
int num = 0, i, j;
for (i = 0; i < num1; i++)
{
for (j = 0; j < num2; j++)
{
if (A[i] == B[j])
{
break;
}
}
if (j == num2)
{
C[num++] = A[i];
}
}
return num;
}
int colCross_A_B(int A[], int B[], int C[], int num1, int num2)
{
int num = 0, i, j;
for (i = 0; i < NUMBER1; i++)
{
for (j = 0; j < NUMBER2; j++)
{
if (A[i] == B[j])
{
C[num++] = A[i];
}
}
}
return num;
}
int sum_A_B(int A[], int B[], int C[], int num1, int num2)
{
int num = 0, i, j;
for (i = 0; i < num1; i++)
{
C[num++] = A[i];
}
for (i = 0; i < num2; i++)
{
for (j = 0; j < num1; j++)
{
if (B[i] == A[j])
{
break;
}
}
if (j == num1)
{
C[num++] = B[i];
}
}
return num;
}