帮用c++我编写一个求集合A与集合B的并集C的程序
时间: 2024-05-08 14:15:35 浏览: 98
实现复数集合类 使用c++
以下是一个求集合A与集合B的并集C的C程序:
```c
#include <stdio.h>
#define MAX_SIZE 100
void union_sets(int setA[], int setB[], int setC[], int sizeA, int sizeB);
int main() {
int setA[MAX_SIZE], setB[MAX_SIZE], setC[MAX_SIZE];
int sizeA, sizeB, sizeC;
// 输入集合A
printf("Enter the size of set A: ");
scanf("%d", &sizeA);
printf("Enter the elements of set A: ");
for (int i = 0; i < sizeA; i++) {
scanf("%d", &setA[i]);
}
// 输入集合B
printf("Enter the size of set B: ");
scanf("%d", &sizeB);
printf("Enter the elements of set B: ");
for (int i = 0; i < sizeB; i++) {
scanf("%d", &setB[i]);
}
// 求并集C
union_sets(setA, setB, setC, sizeA, sizeB);
sizeC = sizeA + sizeB;
// 输出并集C
printf("The union of set A and set B is: ");
for (int i = 0; i < sizeC; i++) {
printf("%d ", setC[i]);
}
printf("\n");
return 0;
}
void union_sets(int setA[], int setB[], int setC[], int sizeA, int sizeB) {
int i, j;
// 先将集合A的元素复制到集合C中
for (i = 0; i < sizeA; i++) {
setC[i] = setA[i];
}
// 遍历集合B的元素
for (i = 0; i < sizeB; i++) {
// 判断集合B的元素是否已经存在于集合C中
for (j = 0; j < sizeA; j++) {
if (setB[i] == setA[j]) {
break;
}
}
// 如果集合B的元素不存在于集合C中,则将其加入到集合C中
if (j == sizeA) {
setC[sizeA++] = setB[i];
}
}
}
```
该程序首先输入集合A和集合B的元素,然后调用 `union_sets()` 函数计算并集C,并输出结果。`union_sets()` 函数先将集合A的元素复制到集合C中,然后遍历集合B的元素,判断其是否已经存在于集合C中。如果不存在,则将其加入到集合C中。最后,函数返回并集C的大小。
阅读全文