判断自反性 反自反性 对称性 反对称性 传递性
#include <stdio.h>
int main()
{
int R[4][4]={1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1};// 用二维数组表示关系
int i,j;
int q=0,w=0,d=0,e=0,r,k,p=0,x=0;
int A[4][4],B[4][4];
for(i=0;i<4;i++)//求R逆
for(j=0;j<4;j++)
{
A[j][i]=R[i][j];
}
printf("R逆=");
for(i=0;i<4;i++)
for(j=0;j<4;j++){
printf("%d ",A[i][j]);
}//
printf("\n");
for(i=0;i<4;i++)//求R*R
for(j=0;j<4;j++)
{
r=0;
for(k=0;k<4;k++){
r+=R[i][k]*R[k][j];
}
B[i][j]=r;
}
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
if(B[i][j]>0)//将数化为一
B[i][j]=1;
p++;//含有数的个数
}
printf("R*R=");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
printf("%d ",B[i][j]);
}
printf("\n");//
for(i=0;i<4;i++) // 判断自反性(注意增删代码)
for(j=0;j<4;j++)
{
if(i==j&&R[i][j]==1){
q++;
}
}
if(q==4){
printf("有自反性\n");
}
else{
printf("没有自反性\n");
}
for(i=0;i<4;i++) // 判断反自反性
for(j=0;j<4;j++)
{
if(i==j&&R[i][j]==0){
w++;
}
}
if(w==4){
printf("有自反性\n");
}
else{
printf("没有自反性\n");
}
for(i=0;i<4;i++)//对称性
for(j=0;j<4;j++){
if(A[i][j]==R[i][j])
d++;
}
if(d==4){
printf("有对称性\n");
}
else{
printf("没有对称性\n");
}
for(i=0;i<4;i++) // 判断反对称性
for(j=0;j<4;j++)
{
if((!(R[i][j]==1&&i!=j))||R[i][j]==0)
e=1;
else e=0;
}
if(e==1){
printf("有反对称性\n");
}
else{
printf("没有反对称性\n");
}
for(i=0;i<4;i++) // 判断传递性
for(j=0;j<4;j++)
{
if(B[i][j]==R[i][j])
x++;
}
if((x==p)){
printf("有传递性\n");
}
else{
printf("没有传递性\n");
}
return 0;
}
本人小白如果有不对的地方还请指出