C 我编写了一个程序来检查矩阵是否对称。它以一种方式工作,但不是以另一种方式工作,尽管两者似乎都是正确的
请在下面找到所需的代码 不起作用的方式:C 我编写了一个程序来检查矩阵是否对称。它以一种方式工作,但不是以另一种方式工作,尽管两者似乎都是正确的,c,matrix,multidimensional-array,C,Matrix,Multidimensional Array,请在下面找到所需的代码 不起作用的方式: int isSy = 0; for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { if (r[i][j] = trans[i][j]) isSy = 1; break; } } if (isSy == 1) printf("T
int isSy = 0;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
if (r[i][j] = trans[i][j])
isSy = 1;
break;
}
}
if (isSy == 1)
printf("The given matrix is symmetric.");
else {
printf("The given matrix is not symmetric.");
}
工作方式:
int isSy = 1;
for (i = 0;i < row; i++) {
for (j = 0; j < col; j++) {
if (r[i][j] != trans[i][j])
isSy = 0;
break;
}
}
if (isSy == 1)
printf("The given matrix is symmetric.");
else {
printf("The given matrix is not symmetric.");
}
其中r是实际矩阵,trans是其转置。如果您观察该语句,如果r[i][j]=trans[i][j],则它不是比较语句,而是赋值语句
if (r[i][j]==trans[i][j])
isSy=1;
break;
相当于
if (r[i][j]==trans[i][j])
{
isSy=1;
}
break;
因此,无论条件检查如何,循环都会中断
我假设逻辑应该类似于下面的代码片段
int isSy=1;
for (i=0;i<row;i++)
{
for (j=0;j<col;j++)
{
if (r[i][j]!=trans[i][j]) {
isSy=0;
break; //only inner loop
}
}
if(isSy==0)
{
break; //breaks outer loop
}
}
if (isSy==1)
printf("The given matrix is symmetric.");
else
{
printf("The given matrix is not symmetric.");
}
尝试添加大括号以提高代码的清晰度和可读性将r[i][j]=trans[i][j]更改为r[i][j]==trans[i][j]@john not working man!!!您的中断不在if内,您应该在isSy=1周围放置一些括号并中断