【C语言】二维数组的乘积

今天做到明解C语言-练习5-4,要求求两矩阵的乘积

 

二维数组求乘积举例

例1:2x3与3x2数组求乘积

例2:4x3与3x4数组求乘积

乘积过程:

a[i][k] *b[k][j] = c[i][j]

1.定义for循环三层

2.最外层和次外层的i,j取值范围取决于乘积后的数组大小

3.最内层的k取决于,两数组之间相同的部分
4.乘积的结果要进行求和

 

例1:2x3与3x2数组求乘积

#include <stdio.h>
int main() {
    int i, j, k;
    int ma[2][3] = { {1, 2, 3}, {4, 5, 6} };
    int mb[3][2] = { {1, 5}, {5, 3}, {8, 1} };
    int mc[2][2] = { 0 };

    
    
    /*
        1 2 3   1 5
                5 3            1+10+24(35) 5+6+3(14)    35 14
                8 1            4+25+48(77) 20+15+6(41)  77 41
        4 5 6
    */


    for (i = 0; i < 2; i++) {
        for (j = 0; j < 2; j++) {
            for (k = 0; k < 3; k++) {
                mc[i][j] += ma[i][k] * mb[k][j];
            }
        }
    }

    for (i = 0; i < 2; i++) {
        for (j = 0; j < 2; j++) {
            printf("%3d", mc[i][j]);
        }
        putchar('\n');
    }

    return 0;
}

 

 

例2:4x3与3x4数组求乘积

#include <stdio.h>
int main() {

    int i, j, k, x, y;

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


    for (i = 0; i < 4; i++) {    //计算矩阵c的值
        for (j = 0; j < 4; j++) {
            c[i][j] = 0;
            for (k = 0; k < 3; k++) {
                c[i][j] += a[i][k] * b[k][j];
            }

        }
    }

    for (x = 0; x < 4; x++) {
        for (y = 0; y < 4; y++)
            printf("%d\t", c[x][y]);
        printf("\n");
    }
    return 0;
}

 

posted @ 2022-07-19 22:02  淫鬻  阅读(1024)  评论(0编辑  收藏  举报