用c语言求两个对称矩阵之和和乘积,只输入下三角元素
时间: 2024-03-13 22:44:44 浏览: 114
C语言求矩阵的各列元素之和的代码示例
5星 · 资源好评率100%
假设我们有两个对称矩阵 A 和 B,它们的维度均为 n x n。假设我们只输入了对称矩阵的下三角元素,那么它们的和 C 和积 D 可以通过以下 C 代码计算:
```c
#include <stdio.h>
#define N 100
int main() {
int n;
int A[N][N], B[N][N], C[N][N], D[N][N];
printf("请输入对称矩阵的维度 n:");
scanf("%d", &n);
// 读入矩阵 A 和 B 的下三角元素
printf("请输入对称矩阵 A 的下三角元素:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
scanf("%d", &A[i][j]);
A[j][i] = A[i][j]; // 对称矩阵的上三角元素等于下三角元素
}
}
printf("请输入对称矩阵 B 的下三角元素:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
scanf("%d", &B[i][j]);
B[j][i] = B[i][j]; // 对称矩阵的上三角元素等于下三角元素
}
}
// 计算矩阵 C 和 D
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
C[i][j] = A[i][j] + B[i][j]; // 矩阵 C 的计算
C[j][i] = C[i][j]; // 对称矩阵的上三角元素等于下三角元素
D[i][j] = 0; // 矩阵 D 的初始化
for (int k = 0; k < n; k++) {
D[i][j] += A[i][k] * B[k][j]; // 矩阵 D 的计算
}
D[j][i] = D[i][j]; // 对称矩阵的上三角元素等于下三角元素
}
}
// 输出结果
printf("矩阵 A + B 的结果是:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", C[i][j]);
}
printf("\n");
}
printf("矩阵 A × B 的结果是:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", D[i][j]);
}
printf("\n");
}
return 0;
}
```
上面的代码中,我们首先读入了矩阵 A 和 B 的下三角元素,然后根据对称矩阵的性质,将上三角元素赋值为下三角元素。然后分别计算它们的和 C 和积 D。需要注意的是,在计算矩阵积 D 的时候,我们需要先将 D 的每一个元素初始化为 0,否则可能会出现不可预期的错误。最后,我们输出了计算结果。
希望这个代码可以帮助您解决问题。
阅读全文