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

如图:请高手帮忙还有请高手看下我自己这个#include"stdafx.h"intmain(){inta[2][3]={1,2,3,4,5,6},b[3][2]={4,2... 如图:请高手帮忙

还有请高手看下我自己这个
#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的情况下还得出的是两个值,问题是出在哪里了
展开
 我来答
yesyes科
2020-05-12 · TA获得超过2.6万个赞
知道答主
回答量:608
采纳率:0%
帮助的人:9万
展开全部

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

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

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

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

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

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

dingzongfu
推荐于2017-12-16 · 超过11用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:30.5万
展开全部

矩阵乘法: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恰好能表示三个数,所以并没有任何数据被舍弃。

你可以根据矩阵乘法定义,用笔在纸上实现一下矩阵乘法:将每个结果一步步实现出来,有助于你的理解!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
riyuuhi
2013-09-09 · 超过17用户采纳过TA的回答
知道答主
回答量:58
采纳率:50%
帮助的人:46.3万
展开全部
#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记录循环次数,可以舍去
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zcy990718
2013-09-09 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1.2万
采纳率:66%
帮助的人:1652万
展开全部
给你一个现成的类,借花献佛
http://zhidao.baidu.com/question/318880929.html
记得采纳哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友fedd5fd14
2013-09-09
知道答主
回答量:33
采纳率:100%
帮助的人:4.9万
展开全部
数学都忘了,真想帮你,可是都忘掉了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式