离散数学实验报告学院:计算机科学与软件学院班级:姓名:学号:实验二关系闭包计算一.目的与要求:熟悉Warshall算法,掌握求关系的自反闭包、对称闭包和传递闭包的方法。二.实验内容:从键盘输入一个关系的关系矩阵,计算其自反闭包、对称闭包和传递闭包,计算传递闭包时使用Warshall算法。用C语言实现。三.实验步骤:1.输入关系矩阵2.计算自反闭包、对称闭包、传递闭包。3.输出结果;四.源程序:1./*求自反闭包*/#include#includeintmain(){intx,y,ii;*对称闭包的运算*/#include#defineN3voidmain(){inta[N][N];inti,j,jj;printf(请输入关系矩阵。);for(i=0;iN;i++)for(j=0;jN;j++)scanf(%d,&a[i][j]);printf(你输入的关系矩阵为\n);for(i=0;iN;i++){for(j=0;jN;j++)printf(%3d,a[i][j]);printf(\n);}printf(\n);/*求对称闭包*/for(j=0;jN;j++)for(i=0;iN;i++)if(a[i][j]==1){for(jj=0;jjN;jj++)a[i][jj]=a[i][jj]||a[j][jj];}/*输出矩阵*/printf(对称闭包为:\n);for(i=0;iN;i++){for(j=0;jN;j++)printf(%3d,a[i][j]);printf(\n);}printf(\n);}3./*传递闭包的运算*/#include#defineN3voidmain(){inta[N][N];inti,j,jj;printf(请输入关系矩阵。);for(i=0;iN;i++)for(j=0;jN;j++)scanf(%d,&a[i][j]);printf(你输入的关系矩阵为\n);for(i=0;iN;i++){for(j=0;jN;j++)printf(%3d,a[i][j]);printf(\n);}printf(\n);/*求传递闭包*/for(j=0;jN;j++)for(i=0;iN;i++)if(a[i][j]==1){for(jj=0;jjN;jj++)a[i][jj]=a[i][jj]||a[j][jj];}/*输出矩阵*/printf(传递闭包为:\n);for(i=0;iN;i++){for(j=0;jN;j++)printf(%3d,a[i][j]);printf(\n);}printf(\n);}五、运行结果