编程实现判断n阶矩阵是否对称(关于主对角线对称c语言
时间: 2024-10-18 14:18:32 浏览: 139
在C语言中,判断一个n阶矩阵是否对称,我们需要比较矩阵的每个对应元素。如果一个矩阵沿着主对角线对称,那么它的上半部分应该等于其下半部分的转置。以下是简单的实现步骤:
首先,你需要创建一个函数,接受一个整数n作为输入,表示矩阵的维度,然后定义一个n * n的二维数组。
```c
#include <stdbool.h>
#include <stdio.h>
bool is_symmetric(int n, int matrix[n][n]) {
// 对角线上下的元素比较
for (int i = 0; i < n / 2; i++) {
// 上下元素相等
if (matrix[i][i] != matrix[n - i - 1][n - i - 1]) {
return false; // 如果不相等则不对称
}
// 左右元素相等(注意不是对角线上的元素)
if (matrix[i][n - i - 1] != matrix[n - i - 1][i]) {
return false;
}
}
// 如果所有对角线下的元素都检查过了,说明是对称的
return true;
}
// 测试函数
int main() {
int n = 4;
int matrix[4][4] = { {1, 2, 3, 4}, {2, 5, 6, 7}, {3, 6, 8, 9}, {4, 7, 9, 10} };
if (is_symmetric(n, matrix)) {
printf("矩阵是对称的。\n");
} else {
printf("矩阵不是对称的。\n");
}
return 0;
}
```
这个`is_symmetric`函数会返回`true`如果矩阵是对称的,`false`则表示不对称。记得在实际应用中检查传入的矩阵是否有效,例如检查它是否都是非负整数并且大小适当。
阅读全文