中药金枪不倒药酒配方:我的程序那错了

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 21:26:42
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++)
{rintf("%d",c[i][j]);
if(t%2==0)printf("\n");}
}

里面的一个公式是咋回事?不大理解啊c[i][j]+=a[i][k]*b[k][j];为什么要用加号?

错误原因有二:
1. scanf("%d",&a[i][k]);
scanf("%d",&b[k][j]);
你的忘了加取地址符号了.
2. 二维数组c[2][2]没有赋初值。

不大理解啊c[i][j]+=a[i][k]*b[k][j];为什么要用加号?
c[i][j]+=a[i][k]*b[k][j];相当于c[i][j]=c[i][j]+a[i][k]*b[k][j];

c[i][j]+=a[i][k]*b[k][j];等效成如下式子
c[i][j]=c[i][j]+a[i][k]*b[k][j];

只是用第一种表示方法系统运行起来要快一点

这是矩阵乘法运算,c[i][j]=a[i][0]*b[0][j]+a[i][1]*b[1][j]+a[i][2]*b[2][j],用for(k=0;k<3;k++) 的话,正好c[i][j]=c[i][j]+a[i][k]*b[k][j]