C语言 3X4和4X3矩阵相乘

#include<stdio.h>
int main()
{
inta[3][4],b[4][3],c[3][3];
inti,j,k;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{ scanf("%d",&a[i][j]);
printf("\n");
}
for(i=0;i<4;i++)
for(j=0;j<3;j++)
{scanf("%d",&b[i][j]);
printf("\n");
}
for(i=0;i<3;i++)
for(j=0;j<3;i++)
for(k=0;k<4;k++)
c[i][j]=a[i][k]*b[k][j];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{printf("%d",c[i][j]);
printf("\n");
}

}
没有error,但是都是运行没有输出

没有输出的原因是死循环了


改过的程序如下(其他的小地方也改了,具体见注释):

#include<stdio.h>
int main()
{
    int a[3][4],b[4][3],c[3][3];
    int i,j,k;
    for(i=0;i<3;i++)
        for(j=0;j<4;j++)
        {      
            scanf("%d",&a[i][j]);
            // 不需要 printf("\n");
        }
    for(i=0;i<4;i++)
        for(j=0;j<3;j++)
        {
            scanf("%d",&b[i][j]);
            // 不需要 printf("\n");
        }
    for(i=0;i<3;i++)
        for(j=0;j<3;j++) // 录入错误,死循环 for(j=0;j<3;i++)
        {
            c[i][j]=0;    
            for(k=0;k<4;k++)
                c[i][j]+=a[i][k]*b[k][j];   // 公式应该是累加,复制的话会覆盖之前的值 
        }
    for(i=0;i<3;i++)    // 更改了一下输出格式 
    {
        for(j=0;j<3;j++)
            printf("%-6d",c[i][j]);
        printf("\n");
    }
    return 0; 
}

温馨提示:答案为网友推荐,仅供参考