关于矩阵乘法问题c++

在主函数中输入M和N
调用函数multiply()
并输出矩阵c
c++

img


#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;
}

img

代码如下:

#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函数了。