判断一个5*5正矩阵是否是对角线(只要左上右下这一条)对称。
提示: aa[i][j]和aa[j][i]是否存在不等的情况,存在改flag=1,初始flag=0, 重要的是确定i和j的范围!
在 C 语言中,可以使用两层循环来遍历矩阵的每一个元素。外层循环控制行,内层循环控制列。可以设置一个标志变量,初始值为 0,如果发现不对称的情况就将它设为 1。然后,在循环结束后判断该标志变量的值,如果为 0 就说明矩阵是对称的,否则就不是。
示例代码如下:
上面的代码只判断了左上右下这一条对角线是否对称。如果需要判断整个矩阵是否对称,可以在循环里面比较两个位置(i,j)和(j,i)的值是否相等。
示例代码如下:
希望上面的示例代码可以帮助您解决问题。
C代码和运行结果如下:
可见正确判断出给定的单位矩阵为对称矩阵
附源码:
#include <stdio.h>
#define N 5
int main() {
int aa[N][N] = {{1,0,0,0,0}, {0,1,0,0,0},
{0,0,1,0,0}, {0,0,0,1,0}, {0,0,0,0,1}};
int i, j, flag = 0;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++)
printf("%d ", aa[i][j]);
printf("\n");
}
for (i = 0; i < N && flag == 0; i++) {
for (j = 0; j < i; j++) {
if (aa[i][j] != aa[j][i]) {
flag = 1;
break;
}
}
}
if (flag == 0)
printf("该方阵是对阵矩阵");
else
printf("该方阵不是对阵矩阵");
return 0;
}
本回答被提问者采纳