C语言,算两个矩阵的乘积,请帮忙看看我的程序哪里错了,谢谢

#include<stdio.h>
int main()
{
int a[3][5],b[5][2],c[3][2];
int i,j,p,q,s,t,x;
printf("请依次输入三行五列矩阵A中的元素:");
for(i=0;i<3;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
printf("请依次输入五行二列矩阵B中的元素:");
for(p=0;p<5;p++)
for(q=0;p<2;p++)
scanf("%d",&b[p][q]);
for(s=0;s<3;s++)
for(t=0;t<2;t++)
for(c[s][t]=0,x=0;x<4;x++)
c[s][t]=a[s][x]*b[x][t]+c[s][t];
printf("A*B=");
for(s=0;s<3;s++)
for(t=0;t<2;t++)
if(t=1)
printf("\n");
printf("%d4",c[s][t]);
return 0;
}

第1个回答  2011-11-26
矩阵的乘法你都弄错了,应该是第一个矩阵的行数和第二个矩阵的列数相等时,矩阵相乘才有意义。
a[3][5]*b[5][2]没有意义
b[5][2]*a[3][5]才有意义,结果才是个5x5的矩阵,
矩阵相乘的结果一定是nxn的矩阵
第2个回答  2011-11-26
printf("请依次输入五行二列矩阵B中的元素:");
for(p=0;p<5;p++)
for(q=0;q<2;q++)//这里是q别弄错了
scanf("%d",&b[p][q]);
for(s=0;s<3;s++)
for(t=0;t<2;t++)
for(c[s][t]=0,x=0;x<5;x++)//这里把4改成5
c[s][t]=a[s][x]*b[x][t]+c[s][t];
printf("A*B=");
for(s=0;s<3;s++)//这里每次第一个循环一遍的时候输出一个换行
{
for(t=0;t<2;t++)
printf("%4d",c[s][t]);//格式控制是%4d不是%d4
printf("\n");
}
return 0;
}本回答被提问者采纳
相似回答