在主函数中输入M和N
调用函数multiply()
并输出矩阵c
c++
#include <iostream>
using namespace std;
#include<stdio.h>
int main()
{
double a[100][100],b[100][100],h[100][100];
int m,n,i,j,k,l,c,d;
scanf("%d %d",&m,&n);//输入行数和列数
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
scanf("%lf",&a[i][j]);//输入第一个矩阵
}
}
for(l=0; l<n; l++)
{
for(k=0; k<m; k++)
{
scanf("%lf",&b[l][k]);//输入第二个矩阵
}
}
for(c=0; c<m; c++) //行数小于等于第一个矩阵的行数
{
for(d=0; d<m; d++) //列数小于等于第二个矩阵的列数
{
int sum = 0;
for(k=0; k<n; k++) //第一个矩阵行数和第二个矩阵列数
{
sum +=a[c][k]*b[k][d];//计算
}
h[c][d] = sum;
}
}
for(c=0; c<m; c++)
{
for(d=0; d<m; d++)
{
printf("%.0f ",h[c][d]);//输出
}
printf("\n");
}
return 0;
}
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define MAXNMB 5
void multiply(int a[MAXNMB][MAXNMB], int b[MAXNMB][MAXNMB], int c[MAXNMB][MAXNMB],int m,int n)
{
int i, j, t, k;
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
{
t = 0;
for (k = 0; k < n; k++)
t += a[i][k] * b[k][j];
c[i][j] = t;
}
}
}
int main()
{
int m, n;
int i, j;
int a[MAXNMB][MAXNMB], b[MAXNMB][MAXNMB], c[MAXNMB][MAXNMB];
printf("Input m and n(1~5):");
scanf("%d %d", &m, &n);
printf("Input A%d*%d:\n", m, n);
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
scanf("%d", &a[i][j]);
}
printf("Input B%d*%d:\n", n, m);
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
scanf("%d",&b[i][j]);
}
printf("C=A*B is:\n");
multiply(a, b, c, m, n);
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
printf("%d ", c[i][j]);
printf("\n");
}
return 0;
}
对于你这个问题,重点还是实现矩阵乘积函数的实现呀,那么你在main中用scanf输入矩阵A,B后存入数组,然后调用multiply函数即可。为此你可以参考我下面的文章,其中涉及矩阵转置、矩阵行列式、矩阵乘法、矩阵求逆、解方程等函数原理讲解以及代码实现,可能会对你有帮助。这里面的MatrixMult函数就是你需要的multiply函数了。