c语言编写一个程序,输入一个M行N列的矩阵存放到二维数组A,输入一个N行K列的矩阵并存放到二维数组B,设计函数完成将A与B相乘的结果存放到二维数组C后输出。
时间: 2025-01-27 08:15:44 浏览: 36
以下是一个用C语言编写的程序,它可以实现输入两个矩阵并将其相乘后输出结果:
```c
#include <stdio.h>
#define MAX_SIZE 100
// 函数声明
void multiplyMatrices(int A[][MAX_SIZE], int B[][MAX_SIZE], int C[][MAX_SIZE], int m, int n, int k);
int main() {
int A[MAX_SIZE][MAX_SIZE], B[MAX_SIZE][MAX_SIZE], C[MAX_SIZE][MAX_SIZE];
int m, n, k, i, j;
// 输入矩阵A的行数和列数
printf("请输入矩阵A的行数和列数(以空格分隔):");
scanf("%d %d", &m, &n);
// 输入矩阵A的元素
printf("请输入矩阵A的元素(按行输入,每行%d个数):\n", n);
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &A[i][j]);
}
}
// 输入矩阵B的列数(矩阵B的行数应与矩阵A的列数相同)
printf("请输入矩阵B的列数:");
scanf("%d", &k);
// 输入矩阵B的元素
printf("请输入矩阵B的元素(按行输入,每行%d个数):\n", k);
for (i = 0; i < n; i++) {
for (j = 0; j < k; j++) {
scanf("%d", &B[i][j]);
}
}
// 计算矩阵乘积
multiplyMatrices(A, B, C, m, n, k);
// 输出结果矩阵C
printf("矩阵A和B的乘积C为:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < k; j++) {
printf("%d ", C[i][j]);
}
printf("\n");
}
return 0;
}
// 矩阵乘法函数
void multiplyMatrices(int A[][MAX_SIZE], int B[][MAX_SIZE], int C[][MAX_SIZE], int m, int n, int k) {
int i, j, l;
// 初始化结果矩阵C
for (i = 0; i < m; i++) {
for (j = 0; j < k; j++) {
C[i][j] = 0;
}
}
// 进行矩阵乘法运算
for (i = 0; i < m; i++) {
for (j = 0; j < k; j++) {
for (l = 0; l < n; l++) {
C[i][j] += A[i][l] * B[l][j];
}
}
}
}
```
这个程序首先定义了一个宏 `MAX_SIZE` 来限制矩阵的最大尺寸。然后,它声明了一个 `multiplyMatrices` 函数来执行矩阵乘法。
在 `main` 函数中,程序首先输入矩阵 A 的行数和列数,然后输入矩阵 A 的元素。接着,它输入矩阵 B 的列数(矩阵 B 的行数应与矩阵 A 的列数相同),并输入矩阵 B 的元素。
然后,程序调用 `multiplyMatrices` 函数来计算矩阵乘积。最后,程序输出结果矩阵 C。
`multiplyMatrices` 函数首先初始化结果矩阵 C,然后进行矩阵乘法运算。
阅读全文
相关推荐

















