C语言关于数组

来源:百度知道 编辑:UC知道 时间:2024/06/22 07:38:20
判断对称距阵,看看我哪里错了。
#include <stdio.h>
#include <math.h>
int fun(int x[][4],int n)
{
/**/int i,j,z;
for(i=0;i<n;i++)
for(j=0;i<n;j++)
{ if(x[i][j]==x[j][i]) z=1;
else z=0;
}
return z;

/**/
}

void main()
{
int tb[4][4],i,j;
int flag;
printf("Input array tb(4*4) :\n");
for(i=0; i<4; i++)
for(j=0; j<4; j++)
scanf("%d",&tb[i][j]);
flag = fun(tb,4);
if( flag == 1 )
printf("Yes\n");
else
printf("No\n");
getch();
}

为什么不能判断相等的if(x[i][j]==x[j][i]) z=1;
而要判断不等的if(x[i][j]!=x[j][i]) z=0;
?????????????????????????????????????
解释下大哥.如果我理解了。给你插棋.

fun函数改为:
int fun(int x[][4],int n)
{
/**/int i,j;
for(i=0;i<n;i++)
for(j=0;i<n;j++)
{ if(x[i][j]!=x[j][i])return 0;
}
return 1;
/**/
}

int fun(int x[][4],int n)
{
/**/int i,j,z;
for(i=0;i<n;i++)
for(j=0;i<n;j++)
{ if(x[i][j]==x[j][i]) z=1;
else z=0; (建议在这里改为 else return 0;)
在这里你判断的时候可能在循环到最后的时候修改标志的值
应该在出现一次不相等的时候就修改为0,然后不再修改该值
而直接返回值0,在主函数中判断他不是对称矩阵
具体的修改意见如上
}
return z;

/**/
}