用两个数组分别来存储以下两个矩阵,定义矩阵运算的迹为所有对角线元素之和,矩阵的加法为对应位置(同一行同一列)上的元素相加,分别在屏幕上按以下形式输出两个矩阵、各自的迹、矩阵C(C = A + B)用c语言
时间: 2024-09-19 15:10:23 浏览: 36
在C语言中,我们可以定义两个二维数组来表示矩阵,并通过遍历对角线计算迹。矩阵的加法操作则可以创建一个新的矩阵,将每个对应位置的元素相加。下面是基本的步骤:
```c
#include <stdio.h>
#define ROWS 3 // 矩阵的行数
#define COLS 3 // 矩阵的列数
// 定义矩阵结构体
typedef struct {
int arr[ROWS][COLS];
} Matrix;
// 计算矩阵迹的函数
int trace(Matrix *a) {
int sum = 0;
for (int i = 0; i < ROWS && i < COLS; i++) {
sum += a->arr[i][i];
}
return sum;
}
// 矩阵加法的函数
Matrix* matrix_add(Matrix *a, Matrix *b) {
Matrix *result = malloc(sizeof(*result));
if (!result) {
printf("Memory allocation failed.\n");
return NULL;
}
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
result->arr[i][j] = a->arr[i][j] + b->arr[i][j];
}
}
return result;
}
void print_matrix(Matrix *matrix) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", matrix->arr[i][j]);
}
printf("\n");
}
}
int main() {
// 初始化两个矩阵A和B
Matrix A = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
Matrix B = { {9, 8, 7}, {6, 5, 4}, {3, 2, 1} };
// 输出矩阵A和B
printf("Matrix A:\n");
print_matrix(&A);
printf("\nMatrix B:\n");
print_matrix(&B);
// 计算迹并输出
int trace_A = trace(&A);
int trace_B = trace(&B);
printf("Trace of A: %d\n", trace_A);
printf("Trace of B: %d\n", trace_B);
// 矩阵加法并输出结果矩阵C
Matrix *C = matrix_add(&A, &B);
printf("\nMatrix C (A + B):\n");
print_matrix(C);
// 清理内存
free(C);
return 0;
}
```
运行这个程序会首先打印出矩阵A和B,然后显示它们的迹以及矩阵C(矩阵A和B相加的结果)。注意,最后别忘了释放动态分配的`C`矩阵的内存。
阅读全文