集合的交并差补运算c语言代码
时间: 2023-09-26 10:13:59 浏览: 203
下面是一个简单的 C 语言代码,实现了集合的交、并、差、补运算:
```c
#include <stdio.h>
#define MAXSIZE 100
// 集合结构体
typedef struct {
int data[MAXSIZE];
int length;
} Set;
// 初始化集合
void initSet(Set *set) {
set->length = 0;
}
// 添加元素
int addElement(Set *set, int e) {
if (set->length >= MAXSIZE) {
return 0;
}
int i;
for (i = 0; i < set->length; i++) {
if (set->data[i] == e) {
return 0;
}
}
set->data[set->length++] = e;
return 1;
}
// 集合的交运算
Set intersect(Set set1, Set set2) {
Set result;
initSet(&result);
int i, j;
for (i = 0; i < set1.length; i++) {
for (j = 0; j < set2.length; j++) {
if (set1.data[i] == set2.data[j]) {
addElement(&result, set1.data[i]);
break;
}
}
}
return result;
}
// 集合的并运算
Set unionSet(Set set1, Set set2) {
Set result;
initSet(&result);
int i;
for (i = 0; i < set1.length; i++) {
addElement(&result, set1.data[i]);
}
for (i = 0; i < set2.length; i++) {
addElement(&result, set2.data[i]);
}
return result;
}
// 集合的差运算
Set difference(Set set1, Set set2) {
Set result;
initSet(&result);
int i, j;
for (i = 0; i < set1.length; i++) {
for (j = 0; j < set2.length; j++) {
if (set1.data[i] == set2.data[j]) {
break;
}
}
if (j == set2.length) {
addElement(&result, set1.data[i]);
}
}
return result;
}
// 集合的补运算
Set complement(Set set1, Set set2) {
Set result;
initSet(&result);
int i, j;
for (i = 0; i < set1.length; i++) {
for (j = 0; j < set2.length; j++) {
if (set1.data[i] == set2.data[j]) {
break;
}
}
if (j == set2.length) {
addElement(&result, set1.data[i]);
}
}
for (i = 0; i < set2.length; i++) {
for (j = 0; j < set1.length; j++) {
if (set2.data[i] == set1.data[j]) {
break;
}
}
if (j == set1.length) {
addElement(&result, set2.data[i]);
}
}
return result;
}
int main() {
Set set1 = {{1, 2, 3, 4, 5}, 5};
Set set2 = {{4, 5, 6, 7, 8}, 5};
Set result;
// 交
result = intersect(set1, set2);
printf("交集:");
for (int i = 0; i < result.length; i++) {
printf("%d ", result.data[i]);
}
printf("\n");
// 并
result = unionSet(set1, set2);
printf("并集:");
for (int i = 0; i < result.length; i++) {
printf("%d ", result.data[i]);
}
printf("\n");
// 差
result = difference(set1, set2);
printf("差集:");
for (int i = 0; i < result.length; i++) {
printf("%d ", result.data[i]);
}
printf("\n");
// 补
result = complement(set1, set2);
printf("补集:");
for (int i = 0; i < result.length; i++) {
printf("%d ", result.data[i]);
}
printf("\n");
return 0;
}
```
在上面的代码中,我们定义了一个集合结构体 `Set`,其中包含一个整型数组 `data` 和集合的长度 `length`。然后,我们实现了集合的初始化、添加元素、交、并、差、补运算。在 `main` 函数中,我们定义了两个集合 `set1` 和 `set2`,并对它们进行了交、并、差、补运算,并输出了运算结果。
阅读全文