用C语言实现矩阵的转置和求矩阵的逆
时间: 2023-11-22 07:38:48 浏览: 72
矩阵转置的C语言实现:
```c
#include <stdio.h>
#define ROWS 3
#define COLS 3
int main()
{
int matrix[ROWS][COLS] = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
int transpose[COLS][ROWS];
// 转置矩阵
for(int i = 0; i < ROWS; i++)
{
for(int j = 0; j < COLS; j++)
{
transpose[j][i] = matrix[i][j];
}
}
// 输出转置后的矩阵
for(int i = 0; i < COLS; i++)
{
for(int j = 0; j < ROWS; j++)
{
printf("%d ", transpose[i][j]);
}
printf("\n");
}
return 0;
}
```
求矩阵逆的C语言实现:
```c
#include <stdio.h>
#define N 3
// 打印矩阵
void printMatrix(double matrix[N][N])
{
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
{
printf("%f ", matrix[i][j]);
}
printf("\n");
}
printf("\n");
}
// 求矩阵的逆
void inverseMatrix(double A[N][N], double B[N][N])
{
double temp;
// 初始化为单位矩阵
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
{
if(i == j)
{
B[i][j] = 1.0;
}
else
{
B[i][j] = 0.0;
}
}
}
// 高斯-约旦消元法
for(int i = 0; i < N; i++)
{
temp = A[i][i];
for(int j = 0; j < N; j++)
{
A[i][j] /= temp;
B[i][j] /= temp;
}
for(int j = 0; j < N; j++)
{
if(i != j)
{
temp = A[j][i];
for(int k = 0; k < N; k++)
{
A[j][k] -= A[i][k] * temp;
B[j][k] -= B[i][k] * temp;
}
}
}
}
}
int main()
{
double A[N][N] = {{1, 2, 0},
{2, 4, 1},
{0, 1, 2}};
double B[N][N];
printf("原矩阵:\n");
printMatrix(A);
inverseMatrix(A, B);
printf("逆矩阵:\n");
printMatrix(B);
return 0;
}
```
阅读全文