关于二维数组

时间:2018-07-16 05:00:39

标签: c arrays

我是C语言的初学者,我是中国人。 我想要这段可用于矩阵乘法的代码。 为此,我使用二维数组。 但是,当我运行代码并输入矩阵时,相乘的结果总是很奇怪。 但是,代码可以设法输出我输入的矩阵。 所以我想两个数组元素的乘法会引起麻烦。 多亏了女神,当我尝试输出两个数组元素的乘法时,确实遇到了相同的问题。

据此,我提出了一些问题。

  1. 如何成功实现两个数组元素的乘法?
  2. 如何纠正我的代码?
  3. 如果我有一些无法忍受的习惯,可以肯定地告诉我!

代码:

#include <stdio.h>

int main(void) {
    // insert code here...
    int i, j ,k ;
    int tensu1[4][3],tensu2[3][4],tensu3[4][4];

    /*input the element of the matrix*/
    for ( i = 0; i < 4; i++ ) {
        for (j = 0; j < 3; j++){
            printf("请输入第一个矩阵第%d行第%d列的数: ", i+1 , j+1);
            scanf( "%d" , &tensu1[i][j]);
        }
    }

    for ( i = 0; i < 3; i++ ) {
        for (j = 0; j < 4; j++){
            printf("请输入第二个矩阵第%d行第%d列的数: ", i+1 , j+1);
            scanf( "%d" , &tensu2[i][j]);
        }
    }

    /*calculate the result */

    for ( i = 0; i < 4 ; i++ ) {
        for(j = 0; j < 4 ; j++) {
            for(k = 0; k < 3 ;k++)
                tensu3[i][j] = tensu1 [i][k] * tensu2 [k][i] + tensu3[i][j];
        }
    }
    /* show result */
    printf("The first matrix is:\n");

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


    }

    printf("The second matrix is:\n");

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


    }

    printf("The result of matrix is:\n");

    for ( i = 0 ; i < 4 ; i++ ) {
        putchar('|');
        for ( j = 0; j < 4; j++ ) {
            printf( " %4d " , tensu3[i][j] );
        }
        putchar('|');
        putchar('\n');


    }
    return 0;
}

2 个答案:

答案 0 :(得分:2)

我在您的代码中进行了编辑。替换它。

/ *计算结果* /

for ( i = 0; i < 4 ; i++ ) {
    for(j = 0; j < 4 ; j++) {
        tensu3[i][j] = 0;
        for(k = 0; k < 3 ;k++)
            tensu3[i][j] += tensu1 [i][j] * tensu2[k][j];
    }
}

答案 1 :(得分:0)

在使用变量的值之前,必须为其分配一个值。在分配值之前,您开始使用tensu3中的值,因此会将它们恰好具有的所有垃圾值添加到其中。