c语言 求大神指教 矩阵相乘 为什么得不到想要的结果 哪儿错了?

2024-11-20 07:11:07
推荐回答(3个)
回答1:

#include
int main()
{
    int a[3][3],b[3][3],i,j,k;
    int c[3][3]= {{0}};//初始化要两层花括号

    for(i=0; i<3; i++)
        for(k=0; k<3; k++)
            scanf("%d",&a[i][k]);

    for(k=0; k<3; k++)
        for(j=0; j<3; j++)
            scanf("%d",&b[k][j]);//把a改成b

    for(i=0; i<3; i++)
        for(j=0; j<3; j++)
            for(k=0; k<3; 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");
    }

    return 0;
}

//楼主你有一个致命错误是将第二个矩阵的读入用了a输入读入,导致了两个矩阵都都到a里面去了,还有对于while(scanf("%d",&a[0][0]) == 1),scanf函数的返回值就是成功读入的变量的个数,scanf("%d",&a[0][0])==1,就是读入一个数据到a[0][0],并且看看是不是成功读入了一个值,然后外加一层while循环,就是只要一直能成功读入值到a[0][0]的意思。

回答2:

矩阵a重复赋值了,你想要怎么对。
我看了下,程序其他地方是没什么问题的。

回答3:

你的矩阵A输入了两次,矩阵B没赋值,所以错了