| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5817 人关注过本帖
标题:怎样用For循环编写两矩阵的乘积?
只看楼主 加入收藏
boliyuan
Rank: 1
来 自:四川南充
等 级:新手上路
帖 子:59
专家分:2
注 册:2007-6-26
结帖率:100%
收藏
 问题点数:0 回复次数:15 
怎样用For循环编写两矩阵的乘积?
怎样用For循环编写两矩阵的乘积?
假设一个是四行三列的矩阵a,一个是三行四列的矩阵b,最后将它们的乘积存入一个数组c中!
for (i=0;i<4;i++)
  for (j=0;j<4;j++)
    sum+=a[i][j]*b[j][i];
    c[i][j]=sum;
可是这只能实现c矩阵的第一个元素,其它的就不知道怎么实现了!
有谁知道,请帮我一下!谢谢!
搜索更多相关主题的帖子: 乘积 For 矩阵 编写 
2008-03-24 15:00
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
for (i=0;i<4;i++)
  for (j=0;j<3;j++)
    c[i][j]=a[i][j]*b[j][i];

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-03-24 16:32
Free自然
Rank: 1
等 级:新手上路
帖 子:23
专家分:3
注 册:2008-3-23
收藏
得分:0 
#include <stdio.h>
main(){
int i,j,k;
int c[4][4];
int a[4][3]={1,1,1,1,1,1,1,1,1,1,1,1};
int b[3][4]={1,1,1,1,0,0,0,0,0,0,0,0};

for(i=0;i<4;i++)
    for(j=0;j<4;j++)
        c[i][j]=0;

for (i=0;i<4;i++)
{
    for(k=0;k<4;k++)
    {
        for(j=0;j<3;j++)
        c[i][k]+=a[i][j]*b[j][k];
        printf("%d ",c[i][k]);
    }
    printf("\n");
}
}
收到的鲜花
  • forever742008-03-25 11:47 送鲜花  3朵   附言:我很赞同
  • 无情剑2008-03-26 13:54 送鲜花  2朵   附言:我很赞同
2008-03-24 19:35
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
/*主要在输出的时候,觉得没有空格格开,数字很难分清,所以,用 %3d来控制,用k%4==0来控制换行。
*/

#include<stdio.h>
int main()
{
        int i,j,k=1;
        int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
        int b[4][4]={21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36};
        int c[4][4];
        for (i=0;i<4;i++)
               for (j=0;j<4;j++,k++)
               {
                       printf(" %3d",c[i][j]=a[i][j]*b[i][j]);
                       if(k%4==0)
                               puts(" ");
               }



        getch();
}

[[it] 本帖最后由 广陵绝唱 于 2008-3-25 00:56 编辑 [/it]]
2008-03-24 23:39
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
/*
后经改进,觉得比上一次精简了许多。
*/
#include<stdio.h>
int main()
{
        int i,j;
        int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
        int b[4][4]={21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36};
        for (i=0;i<4;i++)
        {
               for (j=0;j<4;j++)
                       printf("%4d",a[i][j]*b[i][j]);
               puts(" ");
        }




        getch();
}

[[it] 本帖最后由 广陵绝唱 于 2008-3-25 00:56 编辑 [/it]]
2008-03-24 23:56
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
/*
用楼主的思路也可以。
今天是不是睡不着觉了,我怎么这么兴奋?疑惑ing~~
*/
#include<stdio.h>
int main()
{
        int i,j,sum;
        int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
        int b[4][4]={21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36};
        int c[4][4];
        for (i=0;i<4;i++)
        {
               for (j=0;j<4;j++)
               {
                       sum=a[i][j]*b[i][j];
                       c[i][j]=sum;
                       printf("%4d",c[i][j]);
               }
               puts(" ");
         }




        getch();
}
2008-03-25 00:59
Kcarlos
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:137
专家分:0
注 册:2008-3-1
收藏
得分:0 
学习来了!

相信自己!Love you!
2008-03-26 09:04
wo0304
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-3-25
收藏
得分:0 
学习学习..
不太懂.!
2008-03-26 11:02
boliyuan
Rank: 1
来 自:四川南充
等 级:新手上路
帖 子:59
专家分:2
注 册:2007-6-26
收藏
得分:0 
回复 6# 的帖子
你这样子结果是错的,也许你把矩阵相乘的算法弄错了!
矩阵的算法是:
int a[2][3]={{a11,a12,a13},{a21,a22,a23}};
    a[3][2]={{b11,b12},{b21,b22},{b31,b32}};
则c[2][2]={{a11*b11+a12*b21+a13*b31,a11*b12+a12*b22+a13*b32},{a21*b11+a22*b21+a23*b31,a21*b12+a22*b22+a23*b32}}

[[it] 本帖最后由 boliyuan 于 2008-3-26 11:15 编辑 [/it]]
2008-03-26 11:14
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
回复 9# 的帖子
矩阵乘法是你写的这样?看来是你自己没弄清楚吧!
c[2][2]=a21*b12+a22*b22+a23*b32
2008-03-26 12:01
快速回复:怎样用For循环编写两矩阵的乘积?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046038 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved