基于C语言实现集合A= {1,2,3,4}上的二元关系R={(1,1),(1,2),(1,3),(1,6)} ,求R的自反闭包。
时间: 2023-08-19 21:14:56 浏览: 83
以下是C语言代码实现:
```c
#include <stdio.h>
int main() {
int R[4][2] = {{1,1}, {1,2}, {1,3}, {1,6}};
int R_closure[7][2]; // 自反闭包最多有7个元素
// 复制原关系R
int i, j;
for (i = 0; i < 4; i++) {
R_closure[i][0] = R[i][0];
R_closure[i][1] = R[i][1];
}
// 添加缺失的自反关系
int k = 4;
for (i = 1; i <= 4; i++) {
int found = 0;
for (j = 0; j < 4; j++) {
if (R[j][0] == i && R[j][1] == i) { // 如果已经有该元素的自反关系
found = 1;
break;
}
}
if (!found) { // 如果没有该元素的自反关系
R_closure[k][0] = i;
R_closure[k][1] = i;
k++;
}
}
// 输出自反闭包
for (i = 0; i < k; i++) {
printf("(%d,%d) ", R_closure[i][0], R_closure[i][1]);
}
printf("\n");
return 0;
}
```
输出结果为:
```
(1,1) (1,2) (1,3) (1,6) (2,2) (3,3) (4,4)
```
可以看到,输出结果与前面计算得到的结果相同,即R的自反闭包为:R'={(1,1),(1,2),(1,3),(1,6),(2,2),(3,3),(4,4)}。
阅读全文