最佳答案
#include
#include
#define N 20
#define M 20
main()
{
int i,j,k,m,n;
int r1[M],r2[M],a[N],mr[N][N]={0};
FILE * fp;
printf("程序自动调用c:/stone2.txt文件内相应数据\n");
fp=fopen("c:\\stone2.txt","r");
fscanf(fp,"%d",&n); /*读取集合元素个数*/
for(i=0;i
fscanf(fp,"%d",&m); /*读取关系个数*/
for(k=0;k
fclose(fp);
printf("自反闭包r(R):\n{");
for(i=0;i
for(k=0;k
if(r1[k]!=r2[k]) printf("<%d,%d>,",r1[k],r2[k]);
else continue;
}
printf("\b}\n");
printf("对称闭包s(R):\n{"); /*输出对称闭包*/
for(k=0;k
if(r1[k]!=r2[k]) printf("<%d,%d>,<%d,%d>,",r1[k],r2[k],r2[k],r1[k]);
else printf("<%d,%d>,",r1[k],r2[k]);
}
printf("\b}\n");
k=0;
for(i=0;i
if(r1[k]!=a[i]) continue;
else
{
for(j=0;j
if(r2[k]!=a[j]) continue;
else
{
mr[i][j]=1;
k++; i=0;j=0;
break;
}
}
}
}
printf("关系所对应的关系矩阵:\n");
for(i=0;i
for(j=0;j
printf("\n");
}
for(k=0;k
for(i=0;i
if(!mr[i][j]) continue;
else mr[i][j]=1;
}
printf("传递闭包对应关系矩阵:\n");
for(i=0;i
for(j=0;j
printf("\n");
}
system("PAUSE");
}
自己写的,三个闭包都有,包括传递闭包,看注释就知道了,还是用文件读写,方便数据输入