求高手帮忙用c语言求出两个矩阵的乘积

如图:请高手帮忙

还有请高手看下我自己这个
#include "stdafx.h"

int main()
{
int a[2][3]={1,2,3,4,5,6},b[3][2]={4,2,3,0,1,7},c=1,x,y;
for(x=0;x<2;x++)
{for(y=0;y<3;y++);c*=a[x][y]*b[y][x];printf("%d\n",c);}
}
有0的情况下还得出的是两个值,问题是出在哪里了

1、首先打开编程软件,新建一个项目,添加一个double.cpp文件,如图所示。

2、包含stdio.h头文件,如图所示。

3、接着输入main函数,如图所示。

4、然后定义两个double类型变量并初始化,如图所示。

5、使用scanf函数接受任意两个小数,计算两个小数的乘积并打印出来,如图所示。

6、然后运行程序,查看结果,如图所示。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-16

矩阵乘法:2*3矩阵a与3*2矩阵b相乘得到一个2*2矩阵c,其中:

其中k表示矩阵a的列数和矩阵b的行数;

故有如下代码:


#include<stdio.h>
int main(){
    int a[2][3]={1,2,3,4,5,6};
    int b[3][2]={4,2,3,0,1,7};
    int c[2][2]={0};
    int i,j,k;
    for(k=0;k<2;k++){
        for(i=0;i<2;i++){
            for(j=0;j<3;j++){
                c[k][i]+=a[k][j]*b[j][i];
            }
        }
    }
    for(i=0;i<2;i++){
        for(j=0;j<2;j++){
            printf("c[%d][%d]=%d ",i,j,c[i][j]);
        }
        printf("\n");
    }
}

你没得到正确结果的关键在于:对矩阵乘法规则不是很清楚

追问

谢谢你的回答,但是我看完你这个还有一个问题,你这里k i都是<2,而j<3,那意思不不就是每组数都被舍去了 两个数么,还是说矩阵乘法就是这样的规则,说实话我对矩阵乘法确实不了解了.

追答

只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。一个m×n的矩阵a(m,n)左乘一个n×p的矩阵b(n,p),会得到一个m×p的矩阵c(m,p)。这个就是矩阵乘法的定义。就你这个题目而言,左侧矩阵是2*3(2行3列),右侧矩阵是3*2,所以他们的乘积是2*2.并不是你理解的两个数被舍弃了。
仔细研究这个题目可以发现:k只是作为左侧矩阵的行,i只是做右侧矩阵的列,而左侧矩阵的列和右侧矩阵的行(数值均为3)均由j来表示,而j恰好能表示三个数,所以并没有任何数据被舍弃。

你可以根据矩阵乘法定义,用笔在纸上实现一下矩阵乘法:将每个结果一步步实现出来,有助于你的理解!

本回答被提问者和网友采纳
第2个回答  2013-09-09
#include "stdio.h"
void main()
{
int a[2][3]={1,2,3,4,5,6},b[3][2]={4,2,3,0,1,7},c=0,c1=0,x,y,n=0;
for(x=0;x<2;x++)
{
for(y=0;y<3;y++){
c+=a[x][y]*b[y][x];
n++;
}
if(x==0){
for(y=0;y<3;y++){
c1+=a[x][y]*b[y][x+1];}
}else{
for(y=0;y<3;y++){
c1+=a[x][y]*b[y][x-1];}
}
printf("%d\t%d\n",c,c1);
c=0;
c1=0;
}
}追问

{
int a[2][3]={1,2,3,4,5,6},b[3][2]={4,2,3,0,1,7},c=0,c1=0,x,y,n=0;
for(x=0;x<2;x++)
{
for(y=0;y<3;y++){
c+=a[x][y]*b[y][x];
n++;(这里的n++是做什么的,记录循环次数?)
}
if(x==0)(这里算是把x的值定为常量0了吧)

追答

这个程序仅对本题有效,再循环过程,x只有0,1俩个值,if(x==0)只作判断,没有改变x旳值,n记录循环次数,可以舍去

第3个回答  2013-09-09
给你一个现成的类,借花献佛
http://zhidao.baidu.com/question/318880929.html
记得采纳哦
第4个回答  2013-09-09
数学都忘了,真想帮你,可是都忘掉了
相似回答