两个数组矩阵相乘

问题描述:
        设A为m*p的矩阵,B为p*n的矩阵,那么称m*n的矩阵C为矩阵A与B的乘积,记作C= AB,求矩阵C。

解题思路:
设矩阵A[2][3],矩阵B[3][2]:
        1、矩阵C的第一行第一列的元素是矩阵A的第一行的每个元素与矩阵B第一列的每个元素乘积之和;
        2、矩阵C的第一行第二个元素是矩阵A的第二行的每个元素与矩阵B第二列的每个元素乘积之和;
        3、矩阵C的第二行第一列的元素是矩阵A的第一列的每个元素与矩阵B第一行的每个元素乘积之和;
        4、矩阵C的第二行第二列的元素是矩阵A的第二列的每个元素与矩阵B第二行的每个元素乘积之和。

代码实现:

#include<stdio.h>
int main()
{
    int m, p, n, A[10][10] = { 0 }, B[10][10] = { 0 }, C[10][10] = {0};//三个矩阵
    int i, j, k;//循环变量
    scanf("%d%d%d", &m, &p, &n);
    for (i = 0; i<m; i++)
      for (j = 0; j<p; j++)
        scanf("%d", &A[i][j]);//输入A矩阵
    for (i = 0; i<p; i++)
      for (j = 0; j<n; j++)
        scanf("%d", &B[i][j]);//输入B矩阵
    for (i = 0; i<m; i++)
    {
        for (k = 0; k<n; k++)
        {
            for (j = 0; j<p; j++)
            {
                C[i][k] += A[i][j] * B[j][k];//C[i][k]必须初始化,否则会造成数组中的值不是我们需要的值
            }
        }
    }
    for (i = 0; i<m; i++)
    {
        for (j = 0; j<n; j++)
        {
            printf("%d", C[i][j]);
            if (j == n - 1)
                printf("\n");
            else
                printf(" ");
        }

    }
    return 0;
}

运行结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_42820622/article/details/81427882