矩阵相乘的问题
main()
{int i,j,k,t=2,a[2][3],b[3][2],c[2][2];
printf("input a[i][k]:\n");
for(i=0;i<2;i++)
for(k=0;k<3;k++)
scanf("%d",a[i][k]);
printf("input b[k][j]:\n");
for(k=0;k<3;k++)
for(j=0;j<2;j++)
scanf("%d",b[k][j]);
for(i=0;i<2;i++)for(k=0;k<3;k++)
for(j=0;j<2;j++)
c[i][j]+=a[i][k]*b[k][j];
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{printf("%d",c[i][j]);
if(t%2==0)printf("\n");}
}
这个程序是两个矩阵相乘的!~~我今天早上自己编的!~~但是老师就是说有错误!~~还有他问到我那个公式c[i][j]+=a[i][k]*b[k][j]怎么理解时我不知道啊!~~他就是不给我过!~~555555555拜托个位帮我看下那里错了!~~还有顺便讲下这个公式c[i][j]+=a[i][k]*b[k][j]是什么意思!~~为什么要用加号?i,k,j的定义有讲究吗?
----------------解决方案--------------------------------------------------------
xian xue xue bian cheng gui fan
----------------解决方案--------------------------------------------------------
对
一定要有一个好的编程习惯
----------------解决方案--------------------------------------------------------
#include<stdio.h>
main()
{
int i,j,k;
int a[2][3],b[3][4],c[2][4]={ };
printf("enter value of matrix a:\n");
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
if(i==1)
printf("\n");
}
printf("enter value of matrix b:\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
scanf("%d",&b[i][j]);
if(i==2)
printf("\n");
}
for(i=0;i<2;i++)
for(k=0;k<4;k++)
for(j=0;j<3;j++)
c[i][k]+=a[i][j]*b[j][k];
for(i=0;i<2;i++)
for(k=0;k<4;k++)
{
printf("%-5d",c[i][k]);
if(k==3)
printf("\n");
}
}
数组C的所有元素应该初始化为0,还有你计算数组C时用到的三个循环顺序写错了!c[i][k]+=a[i][j]*b[j][k];这个的意思其实就是用计算机语言表达距阵相乘计算的过程!c[i][k]=∑(a[i][j]*b[j][k])会距阵相乘就会明白这个了!~~~
----------------解决方案--------------------------------------------------------
对论坛灰心,以被本人删除。
[此贴子已经被作者于2006-7-31 16:49:57编辑过]
----------------解决方案--------------------------------------------------------
对啊,做这样的问题当然有讲究啊!注意定义变量的时候要有条理
----------------解决方案--------------------------------------------------------
4楼讲得很详细,您看看就应该明白了。
风格好也是必要的,免得让人看不下去...
----------------解决方案--------------------------------------------------------
回复:(liubei1980)#includemain(){...
谢谢四楼~~~我用上拉~~~ ----------------解决方案--------------------------------------------------------