给定两个矩阵A和B,计算它们的矩阵和AB。 注意:只有规模匹配的矩阵才可以求和。即若A有Ra行、Ca列,B有Rb行、Cb列,则只有Ra=Rb且Ca=Cb时,A和B才能求矩阵和。如样例所示c语言
时间: 2024-04-30 20:03:18 浏览: 13
可以使用两层循环来实现矩阵乘法,具体代码如下:
```c
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int A[MAX_SIZE][MAX_SIZE], B[MAX_SIZE][MAX_SIZE], C[MAX_SIZE][MAX_SIZE];
int Ra, Ca, Rb, Cb;
// 读入矩阵A的大小和元素
scanf("%d%d", &Ra, &Ca);
for (int i = 0; i < Ra; i++) {
for (int j = 0; j < Ca; j++) {
scanf("%d", &A[i][j]);
}
}
// 读入矩阵B的大小和元素
scanf("%d%d", &Rb, &Cb);
for (int i = 0; i < Rb; i++) {
for (int j = 0; j < Cb; j++) {
scanf("%d", &B[i][j]);
}
}
// 判断矩阵A和B是否可以相乘
if (Ca != Rb) {
printf("Error: matrix A's column number doesn't match matrix B's row number.\n");
return 0;
}
// 计算矩阵乘积
for (int i = 0; i < Ra; i++) {
for (int j = 0; j < Cb; j++) {
C[i][j] = 0;
for (int k = 0; k < Ca; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
// 输出矩阵乘积
printf("%d %d\n", Ra, Cb);
for (int i = 0; i < Ra; i++) {
for (int j = 0; j < Cb; j++) {
printf("%d ", C[i][j]);
}
printf("\n");
}
return 0;
}
```
输入格式为:
```
Ra Ca
A[1][1] A[1][2] ... A[1][Ca]
A[2][1] A[2][2] ... A[2][Ca]
...
A[Ra][1] A[Ra][2] ... A[Ra][Ca]
Rb Cb
B[1][1] B[1][2] ... B[1][Cb]
B[2][1] B[2][2] ... B[2][Cb]
...
B[Rb][1] B[Rb][2] ... B[Rb][Cb]
```
输出格式为:
```
Ra Cb
C[1][1] C[1][2] ... C[1][Cb]
C[2][1] C[2][2] ... C[2][Cb]
...
C[Ra][1] C[Ra][2] ... C[Ra][Cb]
```