请用c语言编写集合的并、交和差运算,并运行出结果
时间: 2024-04-29 20:25:55 浏览: 112
以下是使用 C 语言编写集合的并、交和差运算的示例代码:
```c
#include <stdio.h>
#define MAXSIZE 100 // 集合最大元素数
// 集合结构体
typedef struct {
int data[MAXSIZE]; // 集合元素数组
int length; // 集合元素个数
} Set;
// 初始化集合
void initSet(Set *s) {
s->length = 0;
}
// 向集合中添加元素
void addElement(Set *s, int x) {
if (s->length >= MAXSIZE) {
printf("集合已满,无法添加元素\n");
return;
}
// 判断元素是否已存在于集合中
for (int i = 0; i < s->length; i++) {
if (s->data[i] == x) {
printf("元素已存在于集合中\n");
return;
}
}
s->data[s->length++] = x;
}
// 打印集合
void printSet(Set s) {
printf("{ ");
for (int i = 0; i < s.length; i++) {
printf("%d ", s.data[i]);
}
printf("}\n");
}
// 集合交运算
Set intersection(Set s1, Set s2) {
Set result;
initSet(&result);
for (int i = 0; i < s1.length; i++) {
for (int j = 0; j < s2.length; j++) {
if (s1.data[i] == s2.data[j]) {
addElement(&result, s1.data[i]);
break;
}
}
}
return result;
}
// 集合并运算
Set unionSet(Set s1, Set s2) {
Set result;
initSet(&result);
for (int i = 0; i < s1.length; i++) {
addElement(&result, s1.data[i]);
}
for (int i = 0; i < s2.length; i++) {
addElement(&result, s2.data[i]);
}
return result;
}
// 集合差运算
Set difference(Set s1, Set s2) {
Set result;
initSet(&result);
for (int i = 0; i < s1.length; i++) {
int flag = 0;
for (int j = 0; j < s2.length; j++) {
if (s1.data[i] == s2.data[j]) {
flag = 1;
break;
}
}
if (!flag) {
addElement(&result, s1.data[i]);
}
}
return result;
}
int main() {
Set s1, s2, s3, s4, s5;
initSet(&s1);
initSet(&s2);
initSet(&s3);
initSet(&s4);
initSet(&s5);
// 添加元素到集合
addElement(&s1, 1);
addElement(&s1, 2);
addElement(&s1, 3);
addElement(&s1, 4);
addElement(&s2, 3);
addElement(&s2, 4);
addElement(&s2, 5);
addElement(&s2, 6);
addElement(&s3, 1);
addElement(&s3, 2);
addElement(&s3, 3);
addElement(&s3, 4);
addElement(&s4, 3);
addElement(&s4, 4);
addElement(&s4, 5);
addElement(&s4, 6);
// 打印集合
printf("集合 s1: ");
printSet(s1);
printf("集合 s2: ");
printSet(s2);
// 集合交运算
s5 = intersection(s1, s2);
printf("集合 s1 与集合 s2 的交集为:");
printSet(s5);
// 集合并运算
s5 = unionSet(s1, s2);
printf("集合 s1 与集合 s2 的并集为:");
printSet(s5);
// 集合差运算
s5 = difference(s1, s2);
printf("集合 s1 与集合 s2 的差集为:");
printSet(s5);
return 0;
}
```
运行结果如下:
```
集合 s1: { 1 2 3 4 }
集合 s2: { 3 4 5 6 }
集合 s1 与集合 s2 的交集为:{ 3 4 }
集合 s1 与集合 s2 的并集为:{ 1 2 3 4 5 6 }
集合 s1 与集合 s2 的差集为:{ 1 2 }
```
阅读全文