用简单C语言写A={1,2,3,4}上的关系R={<1,1>,<1,2>,<1,4>,<2,1>,<2,2>,<3,2>,<3,4>,<4,2>,<4,4>} 从键盘输入关系R的矩阵,计算其自反闭包、对称闭包和传递闭包(传递闭包使用 R+算法或 Warshall 算法),并输出。
时间: 2024-03-05 20:48:23 浏览: 70
好的,以下是完整的用简单C语言实现的代码:
```c
#include <stdio.h>
int main() {
int R[4][4]; // 关系矩阵
int i, j, k;
// 从键盘输入关系矩阵
printf("请输入关系矩阵R:\n");
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
scanf("%d", &R[i][j]);
}
}
// 计算自反闭包
for (i = 0; i < 4; ++i) {
R[i][i] = 1;
}
// 计算对称闭包
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
if (R[i][j] == 1) {
R[j][i] = 1;
}
}
}
// 计算传递闭包
for (k = 0; k < 4; ++k) {
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
if (R[i][k] == 1 && R[k][j] == 1) {
R[i][j] = 1;
}
}
}
}
// 输出关系矩阵
printf("关系矩阵R的自反闭包:\n");
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
printf("%d ", R[i][j]);
}
printf("\n");
}
// 输出对称闭包
printf("关系矩阵R的对称闭包:\n");
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
printf("%d ", R[i][j]);
}
printf("\n");
}
// 输出传递闭包
printf("关系矩阵R的传递闭包:\n");
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
printf("%d ", R[i][j]);
}
printf("\n");
}
return 0;
}
```
这段代码实现了从键盘输入关系矩阵,计算自反闭包、对称闭包和传递闭包,并输出计算结果。其中,输入关系矩阵的部分使用了scanf函数,输出计算结果的部分使用了printf函数。
阅读全文