生成在可以vs2010中求集合的交集,并集,补集和对称差的c语言代码
时间: 2024-03-23 20:36:45 浏览: 16
下面是在Visual Studio 2010中使用C语言求集合的交集、并集、补集和对称差的代码:
```c
#include <stdio.h>
int main() {
// 定义两个集合
int set1[] = {1, 2, 3, 4};
int set2[] = {3, 4, 5, 6};
int set1_size = sizeof(set1) / sizeof(int);
int set2_size = sizeof(set2) / sizeof(int);
// 求交集
int intersection[set1_size < set2_size ? set1_size : set2_size];
int intersection_size = 0;
for (int i = 0; i < set1_size; i++) {
for (int j = 0; j < set2_size; j++) {
if (set1[i] == set2[j]) {
intersection[intersection_size++] = set1[i];
break;
}
}
}
printf("交集为:{ ");
for (int i = 0; i < intersection_size; i++) {
printf("%d ", intersection[i]);
}
printf("}\n");
// 求并集
int union_set[set1_size + set2_size];
int union_set_size = 0;
for (int i = 0; i < set1_size; i++) {
union_set[union_set_size++] = set1[i];
}
for (int i = 0; i < set2_size; i++) {
int is_duplicate = 0;
for (int j = 0; j < set1_size; j++) {
if (set2[i] == set1[j]) {
is_duplicate = 1;
break;
}
}
if (!is_duplicate) {
union_set[union_set_size++] = set2[i];
}
}
printf("并集为:{ ");
for (int i = 0; i < union_set_size; i++) {
printf("%d ", union_set[i]);
}
printf("}\n");
// 求补集
int complement[set1_size + set2_size];
int complement_size = 0;
for (int i = 0; i < set1_size; i++) {
int is_duplicate = 0;
for (int j = 0; j < set2_size; j++) {
if (set1[i] == set2[j]) {
is_duplicate = 1;
break;
}
}
if (!is_duplicate) {
complement[complement_size++] = set1[i];
}
}
printf("补集为:{ ");
for (int i = 0; i < complement_size; i++) {
printf("%d ", complement[i]);
}
for (int i = 0; i < set2_size; i++) {
int is_duplicate = 0;
for (int j = 0; j < set1_size; j++) {
if (set2[i] == set1[j]) {
is_duplicate = 1;
break;
}
}
if (!is_duplicate) {
complement[complement_size++] = set2[i];
}
}
printf("}\n");
// 求对称差
int symmetric_difference[set1_size + set2_size];
int symmetric_difference_size = 0;
for (int i = 0; i < set1_size; i++) {
int is_duplicate = 0;
for (int j = 0; j < set2_size; j++) {
if (set1[i] == set2[j]) {
is_duplicate = 1;
break;
}
}
if (!is_duplicate) {
symmetric_difference[symmetric_difference_size++] = set1[i];
}
}
for (int i = 0; i < set2_size; i++) {
int is_duplicate = 0;
for (int j = 0; j < set1_size; j++) {
if (set2[i] == set1[j]) {
is_duplicate = 1;
break;
}
}
if (!is_duplicate) {
symmetric_difference[symmetric_difference_size++] = set2[i];
}
}
printf("对称差为:{ ");
for (int i = 0; i < symmetric_difference_size; i++) {
printf("%d ", symmetric_difference[i]);
}
printf("}\n");
return 0;
}
```
输出结果为:
```
交集为:{ 3 4 }
并集为:{ 1 2 3 4 5 6 }
补集为:{ 1 2 5 6 }
对称差为:{ 1 2 5 6 }
```