请用C语言写出以下算法的代码:(1)在求交集时,利用if语句找出两个集合的相同元素,并输出。 (2)在求并集时,将并集中的元素属于其一或另一个,确定出并集中的所有元素。 (3)差集分为相对差和对称差:在求相对差时,分两种情形(A-B、B-A),每种情形均是将一个集合减去共同的交集得到;在求对称差时,方法不唯一,可以是利用相对差的结果,或者是利用并集减去交集得到。
时间: 2024-03-17 11:43:08 浏览: 62
以下是用C语言实现求交集、并集、相对差和对称差的算法代码:
```c
#include<stdio.h>
// 求交集
void intersection(int arr1[], int arr2[], int n1, int n2) {
printf("交集为:");
for(int i = 0; i < n1; i++) {
for(int j = 0; j < n2; j++) {
if(arr1[i] == arr2[j]) {
printf("%d ", arr1[i]);
break;
}
}
}
printf("\n");
}
// 求并集
void unionSet(int arr1[], int arr2[], int n1, int n2) {
printf("并集为:");
int flag;
for(int i = 0; i < n1; i++) {
printf("%d ", arr1[i]);
}
for(int j = 0; j < n2; j++) {
flag = 1;
for(int i = 0; i < n1; i++) {
if(arr2[j] == arr1[i]) {
flag = 0;
break;
}
}
if(flag) {
printf("%d ", arr2[j]);
}
}
printf("\n");
}
// 求相对差
void relativeDiff(int arr1[], int arr2[], int n1, int n2) {
printf("相对差为:\n");
printf("A-B={");
int flag;
for(int i = 0; i < n1; i++) {
flag = 1;
for(int j = 0; j < n2; j++) {
if(arr1[i] == arr2[j]) {
flag = 0;
break;
}
}
if(flag) {
printf("%d ", arr1[i]);
}
}
printf("}\n");
printf("B-A={");
for(int i = 0; i < n2; i++) {
flag = 1;
for(int j = 0; j < n1; j++) {
if(arr2[i] == arr1[j]) {
flag = 0;
break;
}
}
if(flag) {
printf("%d ", arr2[i]);
}
}
printf("}\n");
}
// 求对称差
void symmetricDiff(int arr1[], int arr2[], int n1, int n2) {
printf("对称差为:");
int flag;
for(int i = 0; i < n1; i++) {
flag = 1;
for(int j = 0; j < n2; j++) {
if(arr1[i] == arr2[j]) {
flag = 0;
break;
}
}
if(flag) {
printf("%d ", arr1[i]);
}
}
for(int i = 0; i < n2; i++) {
flag = 1;
for(int j = 0; j < n1; j++) {
if(arr2[i] == arr1[j]) {
flag = 0;
break;
}
}
if(flag) {
printf("%d ", arr2[i]);
}
}
printf("\n");
}
int main() {
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = {3, 4, 5, 6, 7};
int n1 = sizeof(arr1) / sizeof(arr1[0]);
int n2 = sizeof(arr2) / sizeof(arr2[0]);
intersection(arr1, arr2, n1, n2);
unionSet(arr1, arr2, n1, n2);
relativeDiff(arr1, arr2, n1, n2);
symmetricDiff(arr1, arr2, n1, n2);
return 0;
}
```
输出结果为:
```
交集为:3 4 5
并集为:1 2 3 4 5 6 7
相对差为:
A-B={1 2 }
B-A={6 7 }
对称差为:1 2 6 7
```
阅读全文