用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-20 08:07:20 浏览: 45
用于处理数据,求两个集合的交集、并集、补集。附源码。
好的,以下是用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 i, j, k, flag;
// 求R和S的并集
int U[11][2];
k = 0;
for (i = 0; i < 7; i++) {
U[k][0] = R[i][0];
U[k][1] = R[i][1];
k++;
}
for (i = 0; i < 4; i++) {
flag = 1;
for (j = 0; j < 7; j++) {
if (S[i][0] == R[j][0] && S[i][1] == R[j][1]) {
flag = 0;
break;
}
}
if (flag) {
U[k][0] = S[i][0];
U[k][1] = S[i][1];
k++;
}
}
printf("R和S的并集:");
for (i = 0; i < k; i++) {
printf("<%d,%d>", U[i][0], U[i][1]);
if (i < k - 1) {
printf(",");
}
}
printf("\n");
// 求R和S的交集
int I[2][2];
k = 0;
for (i = 0; i < 7; i++) {
for (j = 0; j < 4; j++) {
if (R[i][0] == S[j][0] && R[i][1] == S[j][1]) {
I[k][0] = R[i][0];
I[k][1] = R[i][1];
k++;
}
}
}
printf("R和S的交集:");
for (i = 0; i < k; i++) {
printf("<%d,%d>", I[i][0], I[i][1]);
if (i < k - 1) {
printf(",");
}
}
printf("\n");
// 求R和S的差集
int D1[5][2], D2[2][2];
k = 0;
for (i = 0; i < 7; i++) {
flag = 1;
for (j = 0; j < 4; j++) {
if (R[i][0] == S[j][0] && R[i][1] == S[j][1]) {
flag = 0;
break;
}
}
if (flag) {
D1[k][0] = R[i][0];
D1[k][1] = R[i][1];
k++;
}
}
printf("R-S的差集:");
for (i = 0; i < k; i++) {
printf("<%d,%d>", D1[i][0], D1[i][1]);
if (i < k - 1) {
printf(",");
}
}
printf("\n");
k = 0;
for (i = 0; i < 4; i++) {
flag = 1;
for (j = 0; j < 7; j++) {
if (S[i][0] == R[j][0] && S[i][1] == R[j][1]) {
flag = 0;
break;
}
}
if (flag) {
D2[k][0] = S[i][0];
D2[k][1] = S[i][1];
k++;
}
}
printf("S-R的差集:");
for (i = 0; i < k; i++) {
printf("<%d,%d>", D2[i][0], D2[i][1]);
if (i < k - 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>,<3,2>,<3,4>
R和S的交集:<3,2>,<3,4>
R-S的差集:<1,2>,<2,3>,<1,4>,<4,2>,<4,4>
S-R的差集:<1,1>,<3,3>
```
阅读全文