用c语言,从键盘输入任意两个非空集合,求集合的并集、交集、差集(相对补集)
时间: 2024-03-08 22:51:22 浏览: 130
好的,我可以帮你解决这个问题。以下是使用C语言计算两个集合的并集、交集、差集的代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
void input_set(int set[], int *size);
void print_set(int set[], int size);
void intersection(int set1[], int size1, int set2[], int size2, int result[], int *size);
void union_set(int set1[], int size1, int set2[], int size2, int result[], int *size);
void difference(int set1[], int size1, int set2[], int size2, int result[], int *size);
int main() {
int set1[MAX_SIZE], set2[MAX_SIZE], result[MAX_SIZE];
int size1, size2, result_size;
printf("请输入第一个集合:\n");
input_set(set1, &size1);
printf("请输入第二个集合:\n");
input_set(set2, &size2);
printf("第一个集合为:\n");
print_set(set1, size1);
printf("第二个集合为:\n");
print_set(set2, size2);
// 计算并集
union_set(set1, size1, set2, size2, result, &result_size);
printf("两个集合的并集为:\n");
print_set(result, result_size);
// 计算交集
intersection(set1, size1, set2, size2, result, &result_size);
printf("两个集合的交集为:\n");
print_set(result, result_size);
// 计算差集
difference(set1, size1, set2, size2, result, &result_size);
printf("两个集合的差集为:\n");
print_set(result, result_size);
return 0;
}
// 输入集合
void input_set(int set[], int *size) {
printf("请输入集合元素的数量:");
scanf("%d", size);
printf("请输入集合元素:\n");
for (int i = 0; i < *size; ++i) {
scanf("%d", &set[i]);
}
}
// 输出集合
void print_set(int set[], int size) {
printf("{");
for (int i = 0; i < size; ++i) {
printf("%d", set[i]);
if (i != size - 1) {
printf(", ");
}
}
printf("}\n");
}
// 计算两个集合的交集
void intersection(int set1[], int size1, int set2[], int size2, int result[], int *size) {
*size = 0;
for (int i = 0; i < size1; ++i) {
for (int j = 0; j < size2; ++j) {
if (set1[i] == set2[j]) {
result[*size] = set1[i];
++(*size);
break;
}
}
}
}
// 计算两个集合的并集
void union_set(int set1[], int size1, int set2[], int size2, int result[], int *size) {
*size = 0;
for (int i = 0; i < size1; ++i) {
result[*size] = set1[i];
++(*size);
}
for (int i = 0; i < size2; ++i) {
int found = 0;
for (int j = 0; j < size1; ++j) {
if (set2[i] == set1[j]) {
found = 1;
break;
}
}
if (!found) {
result[*size] = set2[i];
++(*size);
}
}
}
// 计算两个集合的差集
void difference(int set1[], int size1, int set2[], int size2, int result[], int *size) {
*size = 0;
for (int i = 0; i < size1; ++i) {
int found = 0;
for (int j = 0; j < size2; ++j) {
if (set1[i] == set2[j]) {
found = 1;
break;
}
}
if (!found) {
result[*size] = set1[i];
++(*size);
}
}
}
```
这段代码中,我们定义了4个函数:`input_set`用于输入集合,`print_set`用于输出集合,`union_set`计算两个集合的并集,`intersection`计算两个集合的交集,`difference`计算两个集合的差集。在主函数中,我们首先输入两个集合,然后分别计算它们的并集、交集、差集,并输出结果。
阅读全文