基于c语言的矩阵实例
时间: 2023-07-13 18:04:25 浏览: 92
以下是一个基于 C 语言的矩阵示例,可以进行矩阵的加法、减法、乘法和转置操作:
```c
#include <stdio.h>
// 定义矩阵的最大行列数
#define MAX_ROWS 10
#define MAX_COLS 10
// 定义矩阵结构体
typedef struct {
int rows;
int cols;
int data[MAX_ROWS][MAX_COLS];
} Matrix;
// 矩阵加法
Matrix add(Matrix a, Matrix b) {
Matrix result;
result.rows = a.rows;
result.cols = a.cols;
for (int i = 0; i < a.rows; i++) {
for (int j = 0; j < a.cols; j++) {
result.data[i][j] = a.data[i][j] + b.data[i][j];
}
}
return result;
}
// 矩阵减法
Matrix sub(Matrix a, Matrix b) {
Matrix result;
result.rows = a.rows;
result.cols = a.cols;
for (int i = 0; i < a.rows; i++) {
for (int j = 0; j < a.cols; j++) {
result.data[i][j] = a.data[i][j] - b.data[i][j];
}
}
return result;
}
// 矩阵乘法
Matrix mul(Matrix a, Matrix b) {
Matrix result;
result.rows = a.rows;
result.cols = b.cols;
for (int i = 0; i < a.rows; i++) {
for (int j = 0; j < b.cols; j++) {
result.data[i][j] = 0;
for (int k = 0; k < a.cols; k++) {
result.data[i][j] += a.data[i][k] * b.data[k][j];
}
}
}
return result;
}
// 矩阵转置
Matrix transpose(Matrix a) {
Matrix result;
result.rows = a.cols;
result.cols = a.rows;
for (int i = 0; i < a.rows; i++) {
for (int j = 0; j < a.cols; j++) {
result.data[j][i] = a.data[i][j];
}
}
return result;
}
// 打印矩阵
void print(Matrix a) {
for (int i = 0; i < a.rows; i++) {
for (int j = 0; j < a.cols; j++) {
printf("%d ", a.data[i][j]);
}
printf("\n");
}
}
int main() {
// 定义两个矩阵
Matrix a = {3, 3, {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}};
Matrix b = {3, 3, {{9, 8, 7}, {6, 5, 4}, {3, 2, 1}}};
// 打印矩阵
printf("Matrix A:\n");
print(a);
printf("Matrix B:\n");
print(b);
// 矩阵加法
Matrix c = add(a, b);
printf("Matrix C = A + B:\n");
print(c);
// 矩阵减法
Matrix d = sub(a, b);
printf("Matrix D = A - B:\n");
print(d);
// 矩阵乘法
Matrix e = mul(a, b);
printf("Matrix E = A * B:\n");
print(e);
// 矩阵转置
Matrix f = transpose(a);
printf("Matrix F = Transpose(A):\n");
print(f);
return 0;
}
```
需要注意的是,这里使用了结构体来封装矩阵数据,同时为了简化示例,这里限定了矩阵的最大行列数为 10。