c语言编写求n阶方阵伴随矩阵
时间: 2024-03-25 13:37:45 浏览: 94
用C语言求解N阶矩阵的算法
以下是一个通用的求 $n$ 阶方阵伴随矩阵的 C 语言代码:
```c
#include <stdio.h>
// 获取 n-1 阶子矩阵
void get_submatrix(int matrix[][100], int sub[][100], int row, int col, int n) {
int i, j, p = 0, q = 0;
for (i = 0; i < n; i++) {
if (i == row) continue;
for (j = 0; j < n; j++) {
if (j == col) continue;
sub[p][q++] = matrix[i][j];
}
q = 0;
p++;
}
}
// 计算行列式的值
int determinant(int matrix[][100], int n) {
int i, j, det = 0;
int sub[100][100];
if (n == 1) {
return matrix[0][0];
} else if (n == 2) {
return matrix[0][0]*matrix[1][1] - matrix[0][1]*matrix[1][0];
} else {
for (i = 0; i < n; i++) {
get_submatrix(matrix, sub, 0, i, n);
det += ((i%2 == 0) ? 1 : -1) * matrix[0][i] * determinant(sub, n-1);
}
}
return det;
}
// 求伴随矩阵
void adjoint(int matrix[][100], int adj[][100], int n) {
int i, j, sign;
int sub[100][100];
if (n == 1) {
adj[0][0] = 1;
} else {
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
get_submatrix(matrix, sub, i, j, n);
sign = ((i+j)%2 == 0) ? 1 : -1;
adj[j][i] = sign * determinant(sub, n-1);
}
}
}
}
int main() {
int n, i, j;
int matrix[100][100], adj[100][100];
printf("Enter the size of matrix: ");
scanf("%d", &n);
printf("Enter the elements of matrix:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
adjoint(matrix, adj, n);
printf("Adjoint matrix:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%d ", adj[i][j]);
}
printf("\n");
}
return 0;
}
```
这个代码可以接受用户输入一个 $n$ 阶方阵,并将其伴随矩阵存储在 `adj` 中。你可以根据需要修改输入矩阵和输出矩阵,但请注意,该代码最多支持 $100$ 阶方阵。
阅读全文