C 中 n 数组的交集和并集

作者:编程家 分类: arrays 时间:2025-05-30

## 数组交集与并集的生成

在 C 语言中,处理数组的交集(两个数组共有的元素集合)和并集(两个数组所有元素的集合)是常见的操作。这些操作可以通过遍历数组元素并进行比较来实现。让我们来看一下如何在 C 语言中生成数组的交集和并集。

### 生成数组交集

要生成两个数组的交集,我们需要遍历第一个数组中的元素,并检查这些元素是否存在于第二个数组中。若存在,则将该元素添加到交集数组中。

c

#include

void intersection(int arr1[], int arr2[], int m, int n) {

printf("数组交集:");

for (int i = 0; i < m; i++) {

for (int j = 0; j < n; j++) {

if (arr1[i] == arr2[j]) {

printf("%d ", arr1[i]);

break;

}

}

}

}

int main() {

int arr1[] = {1, 2, 3, 4, 5};

int arr2[] = {3, 4, 5, 6, 7};

int m = sizeof(arr1) / sizeof(arr1[0]);

int n = sizeof(arr2) / sizeof(arr2[0]);

intersection(arr1, arr2, m, n);

return 0;

}

### 生成数组并集

要生成两个数组的并集,我们需要先将第一个数组的所有元素添加到并集数组中,然后遍历第二个数组并检查元素是否已存在于并集中。若不存在,则将该元素添加到并集数组中。

c

#include

void unionSet(int arr1[], int arr2[], int m, int n) {

printf("%

数组并集:");

int mergedArr[m + n];

int mergedIndex = 0;

for (int i = 0; i < m; i++) {

mergedArr[mergedIndex++] = arr1[i];

}

for (int i = 0; i < n; i++) {

int flag = 0;

for (int j = 0; j < m; j++) {

if (arr2[i] == arr1[j]) {

flag = 1;

break;

}

}

if (!flag) {

mergedArr[mergedIndex++] = arr2[i];

}

}

for (int i = 0; i < mergedIndex; i++) {

printf("%d ", mergedArr[i]);

}

}

int main() {

int arr1[] = {1, 2, 3, 4, 5};

int arr2[] = {3, 4, 5, 6, 7};

int m = sizeof(arr1) / sizeof(arr1[0]);

int n = sizeof(arr2) / sizeof(arr2[0]);

unionSet(arr1, arr2, m, n);

return 0;

}

以上代码展示了如何在 C 语言中生成两个数组的交集和并集。通过比较元素并适当地操作数组,我们可以轻松地实现这些常见的集合操作。