c语言:输入一个2行3列的矩阵A和一个3行4列的矩阵B,计算两矩阵的乘积

 我来答
轩轩智慧先锋
高能答主

2019-10-23 · 希望是生命中的那束光,照亮我们的未来。
轩轩智慧先锋
采纳数:2714 获赞数:533595

向TA提问 私信TA
展开全部

解题过程如下:

#include <stdio.h>;#include <stdlib.h>

#define L 2,#define M 3,#define N 4

}printf("\n");}return;}int main(void){double A[L][M] = {{0}};

double B[M][N] = {{0}};double C[L][N] = {{0}};int i = 0, j = 0, k = 0;

printf("\nGenerate A[%d][%d]:\n", L, M);

genArr(&A[0][0], L, M);

printMatrix(&A[0][0], L, M);

printf("\nGenerate B[%d][%d]:\n", M, N);

{for (k = 0; k < N; ++k)

{C[i][k] = 0;for (j = 0; j < M; ++j)

{C[i][k] += A[i][j] * B[j][k];}}}printf("\nCalc C[%d][%d]:\n", L, N);

printMatrix(&C[0][0], L, N);return 0;}


扩展资料

性质:

矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义  。

一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑地集中到了一起,所以有时候可以简便地表示一些复杂的模型,如电力系统网络模型。

当矩阵A的列数(column)等于矩阵B的行数(row)时,A与B可以相乘。矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。

当提及“矩阵相乘”或者“矩阵乘法”的时候,并不是指代这些特殊的乘积形式,而是定义中所描述的矩阵乘法。在描述这些特殊乘积时,使用这些运算的专用名称和符号来避免表述歧义。

把给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i->j。令C=A*A,那么C(i,j)=ΣA(i,k)*A(k,j),实际上就等于从点i到点j恰好经过2条边的路径数(枚举k为中转点)。

类似地,C*A的第i行第j列就表示从i到j经过3条边的路径数。同理,如果要求经过k步的路径数,只需要二分求出A^k即可。

chenfenggang99
推荐于2017-11-26 · TA获得超过1850个赞
知道大有可为答主
回答量:1746
采纳率:75%
帮助的人:1746万
展开全部
#include<stdio.h>
int main()
{
    int a[2][3];
    int b[3][4];
    int i,j,k,x,y,c[2][4];
printf("输入2*3 个数 以空格隔开:\n");
for(i=0;i<2;i++)
for(k=0;k<3;k++)
scanf("%d",&a[i][k]);
printf("输入3*4 个数 以空格隔开:\n");
for(i=0;i<3;i++)
for(k=0;k<4;k++)
scanf("%d",&b[i][k]);
for(i=0;i<2;i++){ //计算矩阵c的值 
for(j=0;j<4;j++){
c[i][j]=0;
for(k=0;k<3;k++){
c[i][j]+=a[i][k]*b[k][j];
}

}
}
              
    for(x=0;x<2;x++)
    {   
        for(y=0;y<4;y++)
            printf("%d\t",c[x][y]);
        printf("\n");
    }
    return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式