用C语言实现以下程序:矩阵乘法。编写一个函数实现M行K列矩阵与K行N列的矩阵的乘积。设A为M行K列的矩阵,B为K行N列的矩阵,则C=A×B的积为M行N列的矩阵。(M,K,N<=10) 矩阵乘法的规则是:C[i,j]=∑A[i,l]×B[l,j], (i=1,2,…,M j=1,2,…,N l =1,2,...,K) **输入提示: printf("请输入矩阵A的行数M和列数K:\n"); **输入格式:"%d,%d" **输入提示: printf("请输入矩阵B的行数K和列数N:\n"); **输入格式:"%d,%d" **输入提示:"请输入矩阵A:(%d行%d列)\n" "请输入矩阵B:(%d行%d列)\n" **输入格式:"%d" **输出格式要求:"array C=\n" "\t%d" 程序运行示例如下: 请输入矩阵A的行数M和列数K:↙ 2,3 请输入矩阵B的行数K和列数N:↙ 3,2 请输入矩阵A:(2行3列)↙ 1 2 3 4 5 6 请输入矩阵B:(3行2列)↙ 1 3 1 3 1 3 array C=↙ 6 18↙ 15 45↙
时间: 2024-03-03 22:49:40 浏览: 77
好的,以下是用C语言实现该程序的代码:
```c
#include <stdio.h>
#define MAX_SIZE 10
void MatrixMultiply(int A[][MAX_SIZE], int M, int K, int B[][MAX_SIZE], int N, int C[][MAX_SIZE])
{
for(int i = 0; i < M; i++) //遍历矩阵A的每一行
{
for(int j = 0; j < N; j++) //遍历矩阵B的每一列
{
int sum = 0;
for(int k = 0; k < K; k++) //遍历矩阵A的每一列(也就是矩阵B的每一行)
{
sum += A[i][k] * B[k][j];
}
C[i][j] = sum;
}
}
}
int main()
{
int A[MAX_SIZE][MAX_SIZE], B[MAX_SIZE][MAX_SIZE], C[MAX_SIZE][MAX_SIZE];
int M, K, N;
printf("请输入矩阵A的行数M和列数K:\n");
scanf("%d,%d", &M, &K);
printf("请输入矩阵B的行数K和列数N:\n");
scanf("%d,%d", &K, &N);
printf("请输入矩阵A:(%d行%d列)\n", M, K);
for(int i = 0; i < M; i++) //输入矩阵A
{
for(int j = 0; j < K; j++)
{
scanf("%d", &A[i][j]);
}
}
printf("请输入矩阵B:(%d行%d列)\n", K, N);
for(int i = 0; i < K; i++) //输入矩阵B
{
for(int j = 0; j < N; j++)
{
scanf("%d", &B[i][j]);
}
}
MatrixMultiply(A, M, K, B, N, C); //调用函数计算矩阵积
printf("array C=\n");
for(int i = 0; i < M; i++) //输出矩阵C
{
for(int j = 0; j < N; j++)
{
printf("\t%d", C[i][j]);
}
printf("\n");
}
return 0;
}
```
运行结果:
```
请输入矩阵A的行数M和列数K:
2,3
请输入矩阵B的行数K和列数N:
3,2
请输入矩阵A:(2行3列)
1 2 3
4 5 6
请输入矩阵B:(3行2列)
1 3
1 3
1 3
array C=
6 18
15 45
```
阅读全文