C 中 n 数组的交集和并集

arrays

1个回答

写回答

小花菜

2025-06-23 11:55

+ 关注

AI
AI

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

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

生成数组交集

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

c

#include <stdio.h>

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

printf("数组交集:");

for (int i = 0; i < m; i++) {</p> for (int j = 0; j < n; j++) {</p> 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 <stdio.h>

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++) {</p> mergedArr[mergedIndex++] = arr1[i];

}

for (int i = 0; i < n; i++) {</p> int flag = 0;

for (int j = 0; j < m; j++) {</p> if (arr2[i] == arr1[j]) {

flag = 1;

break;

}

}

if (!flag) {

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

}

}

for (int i = 0; i < mergedIndex; i++) {</p> 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 语言中生成两个数组的交集和并集。通过比较元素并适当地操作数组,我们可以轻松地实现这些常见的集合操作。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号