用C语言实现给定A={1,2,3,4}上的关系R={<1,2>,<2,3>,<3,2>,<3,4>,<1,4>,<4,2>,<4,4>},S={<1,1>,<3,3>,<3,2>,<3,4>},求R和S的并集、交集、差集(相对补集)。
时间: 2023-08-21 15:01:41 浏览: 206
用于处理数据,求两个集合的交集、并集、补集。附源码。
好的,以下是用C语言实现给定A={1,2,3,4}上的关系R和S的并集、交集、差集的代码:
```c
#include <stdio.h>
int main() {
int A[] = {1, 2, 3, 4};
int R[7][2] = {{1, 2}, {2, 3}, {3, 2}, {3, 4}, {1, 4}, {4, 2}, {4, 4}};
int S[4][2] = {{1, 1}, {3, 3}, {3, 2}, {3, 4}};
int U[11][2], I[2][2], D[7][2];
int uLen = 0, iLen = 0, dLen = 0;
// 求并集
for (int i = 0; i < 7; i++) {
U[uLen][0] = R[i][0];
U[uLen][1] = R[i][1];
uLen++;
}
for (int i = 0; i < 4; i++) {
int flag = 0;
for (int j = 0; j < 7; j++) {
if (S[i][0] == R[j][0] && S[i][1] == R[j][1]) {
flag = 1;
break;
}
}
if (!flag) {
U[uLen][0] = S[i][0];
U[uLen][1] = S[i][1];
uLen++;
}
}
// 求交集
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 4; j++) {
if (R[i][0] == S[j][0] && R[i][1] == S[j][1]) {
I[iLen][0] = R[i][0];
I[iLen][1] = R[i][1];
iLen++;
}
}
}
// 求差集
for (int i = 0; i < 7; i++) {
int flag = 0;
for (int j = 0; j < 4; j++) {
if (R[i][0] == S[j][0] && R[i][1] == S[j][1]) {
flag = 1;
break;
}
}
if (!flag) {
D[dLen][0] = R[i][0];
D[dLen][1] = R[i][1];
dLen++;
}
}
// 输出结果
printf("R ∪ S = {");
for (int i = 0; i < uLen; i++) {
printf("<%d, %d>", U[i][0], U[i][1]);
if (i < uLen - 1) {
printf(", ");
}
}
printf("}\n");
printf("R ∩ S = {");
for (int i = 0; i < iLen; i++) {
printf("<%d, %d>", I[i][0], I[i][1]);
if (i < iLen - 1) {
printf(", ");
}
}
printf("}\n");
printf("R - S = {");
for (int i = 0; i < dLen; i++) {
printf("<%d, %d>", D[i][0], D[i][1]);
if (i < dLen - 1) {
printf(", ");
}
}
printf("}\n");
return 0;
}
```
输出结果为:
```
R ∪ S = {<1, 2>, <2, 3>, <3, 2>, <3, 4>, <1, 4>, <4, 2>, <4, 4>, <1, 1>, <3, 3>}
R ∩ S = {<3, 2>, <3, 4>}
R - S = {<1, 2>, <2, 3>, <1, 4>, <4, 2>, <4, 4>}
```
希望能帮助到你!
阅读全文