如何在C语言中计算矩阵乘法

如何在C语言中计算矩阵乘法,c,matrix-multiplication,C,Matrix Multiplication,我试过这个代码,但有点不对劲 for (i = 0; i < row1; i++) { for (j = 0; j < col2; j++) suma = 0; for (l = 0; l < row2; l++) suma += a[i][l] * bt[l][j]; c[i][j] = suma; } pr

我试过这个代码,但有点不对劲

        for (i = 0; i < row1; i++) {
        for (j = 0; j < col2; j++)
            suma = 0;
            for (l = 0; l < row2; l++)
            suma += a[i][l] * bt[l][j];
            c[i][j] = suma;             
    }
    printf("\nMultiplication of 2 matrices:\n");
    for (i = 0; i < row1; i++) {
        for (j = 0; j < col2; j++)
            printf("%2d", c[i][j]);
        printf("\n");
    }
(i=0;i{ 对于(j=0;j 当我调试它时,它会打印出行和列中的随机数(比如-895473)

缺少大括号

for (i = 0; i < row1; i++) {
    for (j = 0; j < col2; j++) { // added brace
        suma = 0;
        for (l = 0; l < row2; l++) { // added brace
            suma += a[i][l] * bt[l][j];
        } // added brace
        c[i][j] = suma;             
    } // added brace
}
(i=0;i{ 对于(j=0;j 里面的大括号不是绝对必要的,但是如果你总是使用大括号,你以后就不太可能犯这样的错误

没有大括号,它看起来像这样,正确缩进:

for (i = 0; i < row1; i++) {
    for (j = 0; j < col2; j++)
        suma = 0;
    // Note that j = col2, which means that we are accessing
    // array elements out of bounds, which is an error.
    for (l = 0; l < row2; l++)
        suma += a[i][l] * bt[l][j];
    c[i][j] = suma;             
}
(i=0;i{ 对于(j=0;j 这显然是错误的。另一种减少错误可能性的方法是在循环中移动变量:

for (int i = 0; i < row1; i++) {
    for (int j = 0; j < col2; j++) {
        double suma = 0;
        for (int l = 0; l < row2; l++) {
            suma += a[i][l] * bt[l][j];
        }
        c[i][j] = suma;             
    }
}
for(int i=0;i
这样,如果删除大括号,将出现错误,因为未定义
j
。(这在C90中不起作用,但这已经是古老的历史了。)

以下是我的全部代码:。如果你能告诉我我做错了什么,我将不胜感激。