c语言程序 判断等价关系,离散数学关系性质的C或C语言判断实验报告.doc

1.【实验目的实验内容M给出,要求判断由M表示的这个关系是否为对称关系。假定R的关系矩阵为:

3.【实验M(R的关系矩阵)为对称矩阵,则R是对称关系;若M为反对称矩阵,则R是反对称关系。因为R为对称的是等价关系的必要条件,所以,本算法可以作为判等价关系算法的子程序给出。

算法实现:

输入关系矩阵M(M为n阶方阵);

判断对称性,对于i=2,3,….,n;j=1,2,……,i-1,若存在mij=mji,则R是对称的;

判断反对称性;

判断既是对称的又是反对称的;

判断既不是对称的又不是反对称的;

输出判断结果。

自反:

从给定的关系矩阵来断判关系R是否为自反是很容易的。若M(R的关系矩阵)的主对角线元素均为1,则R是自反关系;若M(R的关系矩阵)的主对角线元素均为0,则R是反自反关系;若M(R的关系矩阵)的主对角线元素既有1又有0,则R既不是自反关系也不是反自反关系。本算法可以作为判等价关系算法的子程序给出。

算法实现

输入关系矩阵M(M为n阶方阵)。

判断自反性,对于i=1,2,….,n;若存在mii=0,则R不是自反的;若存在mii=1,则R是自反的;否则R既不是自反关系也不是反自反关系。

输出判断结果。

源代码

#include

void z();

void r();

void main()

{

int d;

while(d)

{

printf("欢迎使用关系性质的判断系统\n\n 1. 对称关系的判断 2. 自反关系的判断\n\n请输入选项:");

scanf("%d",&d);

switch(d){

case 1: r();break;

case 2: z();break;

case 0: break;

}

printf("\n");

printf("是否还继续? 是请输入1,否请输入0:");

scanf("%d",&d);

printf("\n\n");

}return 0;

}

void r()

{

int a[30][30];

int m,n,i,j,c,b,d;

c=0;

d=0;

b=0;

d=1;

printf("请输入矩阵的行数");

scanf("%d",&m);

printf("请输入矩阵的列数");

scanf("%d",&n);

for(i=0;i

{

for(j=0;j

{

printf("请输入矩阵关系中第%d行第%d列的数字:",i,j);

scanf("%d",&a[i][j]);

}

}

printf("关系矩阵M为:\n");

for(i=0;i

{

for(j=0;j

printf("%d ",a[i][j]);

printf("\n");

}

for(i=0;i

{

for(j=0;j

{

if(a[i][j]!=a[j][i])

{

c=1;

break;

}

}

}

if(c==0)

{

for(i=0;i

{

for(j=0;j

if(a[i][j]==1){

if(a[j][i]!=0){

c=2;

break;

}

}

}

}

if(c==2) printf("该矩阵是对称性的\n");

else

if(c==0) printf("该矩阵是既对称又反对称的\n");

}

else

if(c==1){

for(i=0;i

for(j=0;j

if(a[i][j]==1){

if(a[j][i]!=0){

c=2;

break;

}

}

}

}

if(c==2) printf("该矩阵不是对称的又不是反对称的\n");

else{

printf("该矩阵是反对称性的\n");

}

}}

void z()

{

int m,n,i,j,a[80][80],c;

c=0;

printf("请输入矩阵的行数");

scanf("%d",&m)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值