C语言中两矩阵相乘

main()
{
int i,j,k;
int a[2][3]={1,2,3,4,5,6},b=[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},c[2][4]={0};
for(i=0;i<2;i++)
for(j=0;j<4;j++)
for(k=0;k<3;k++)
{
c[i][j]+=a[i][k]*b[k][j];
printf("The Members of Matrix C:\n");
}
for(i=0;i<2;i++)
{
printf("\n");
for(j=0;j<4;j++)
printf("%4d",c[i][j]);
}
}
用tc运行,总是有错误,不知错在哪?

#include <stdio.h>
int main()
{
int x,y,z;
int i,j,l;
int sum=0;
printf("请输入前一个矩阵的行数,列数与后一个矩阵的列数:\n");
scanf("%d %d %d",&x,&y,&z);
int a[x][y];
int b[y][z];
int c[x][z];
//读入矩阵
printf("请输入矩阵a:\n");
for(i=0;i<x;i++){
for(j=0;j<y;j++){
scanf("%d",&a[i][j]);
}
}
printf("请输入矩阵b:\n");
for(i=0;i<y;i++){
for(j=0;j<z;j++){
scanf("%d",&b[i][j]);
}
}
printf("矩阵a为:\n");
for(i=0;i<x;i++){
for(j=0;j<y;j++){
printf("%d",a[i][j]);
if(j==y-1)
printf("\n");
else
printf("\t");
}
}
printf("矩阵b为:\n");
for(i=0;i<y;i++){
for(j=0;j<z;j++){
printf("%d",b[i][j]);
if(j==z-1)
printf("\n");
else
printf("\t");
}
}
for(i=0;i<x;i++){
for(l=0;l<z;l++){
for(j=0;j<y;j++){
sum+=a[i][j]*b[j][l];
if(j==y-1){
c[i][l]=sum,sum=0;
}
}
}
}
printf("矩阵a与矩阵b的乘积为:\n");
for(i=0;i<x;i++){
for(j=0;j<z;j++){
printf("%d",c[i][j]);
if(j==z-1)
printf("\n");
else
printf("\t");
}
}

return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-22
b=[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},多了个等号
b[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},本回答被提问者采纳
第2个回答  2009-12-16
main()
{
int i,j,k;
int a[2][3]={1,2,3,4,5,6},b[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},c[2][4]={0};
for(i=0;i<2;i++)
for(j=0;j<4;j++)
for(k=0;k<3;k++)
{
c[i][j]+=a[i][k]*b[k][j];
printf("The Members of Matrix C:%d\n",c[i][j]);
}
for(i=0;i<2;i++)
{
printf("\n");
for(j=0;j<4;j++)
printf("%4d",c[i][j]);
}
getch();
}

改了一下
b=[3][4]={
printf("The Members of Matrix C:\n");
这两个地方地方有问题
第3个回答  2009-12-16
b=[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}

改为

b[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}

包含stdio.h文件
相似回答