定义矩阵的结构体类型并实现矩阵加法
时间: 2024-06-17 09:03:22 浏览: 6
我们可以定义一个结构体类型来表示矩阵,如下所示:
```
typedef struct {
int rows; // 矩阵的行数
int cols; // 矩阵的列数
double **data; // 存储矩阵元素的二维数组
} Matrix;
```
其中,`rows`和`cols`分别表示矩阵的行数和列数,`data`是一个指向指针的指针,用于存储矩阵元素的二维数组。
接下来,我们可以实现矩阵加法的函数,如下所示:
```
Matrix matrix_add(Matrix m1, Matrix m2) {
// 判断两个矩阵是否可以相加
if (m1.rows != m2.rows || m1.cols != m2.cols) {
printf("Error: The two matrices cannot be added.\n");
exit(1);
}
// 创建一个新的矩阵用于存储结果
Matrix result = {m1.rows, m1.cols, NULL};
result.data = malloc(result.rows * sizeof(double *));
for (int i = 0; i < result.rows; i++) {
result.data[i] = malloc(result.cols * sizeof(double));
}
// 计算矩阵加法
for (int i = 0; i < result.rows; i++) {
for (int j = 0; j < result.cols; j++) {
result.data[i][j] = m1.data[i][j] + m2.data[i][j];
}
}
return result;
}
```
该函数首先判断两个矩阵是否可以相加,若不满足条件则输出错误信息并退出程序。然后创建一个新的矩阵用于存储结果,计算矩阵加法并返回结果。