C 关于二维数组

C 关于二维数组,c,arrays,C,Arrays,我是C语言的初学者,我是中国人。 我想要这段可以实现矩阵乘法的代码。 为了实现这一点,我使用了二维数组。 但是当我运行代码和输入矩阵时,乘法的结果总是很奇怪。 但是,代码可以输出我输入的矩阵。 所以我认为两个数组的元素相乘会引起麻烦。 多亏了女神,当我尝试输出两个数组元素的乘法时,它真正遇到了相同的问题 根据这一点,我提出了一些问题 如何成功实现两个数组元素的乘法 如何更正代码 如果我有一些你无法忍受的习惯,你可以肯定地告诉我 守则: #include <stdio.h> int

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

根据这一点,我提出了一些问题

  • 如何成功实现两个数组元素的乘法
  • 如何更正代码
  • 如果我有一些你无法忍受的习惯,你可以肯定地告诉我 守则:

    #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;
    }
    
    #包括
    内部主(空){
    //在这里插入代码。。。
    int i,j,k;
    int-tensu1[4][3]、tensu2[3][4]、tensu3[4][4];
    /*输入矩阵的元素*/
    对于(i=0;i<4;i++){
    对于(j=0;j<3;j++){
    printf(“请输入第一个矩阵第%D行第%D列的数: ", i+1,j+1);
    scanf(“%d”、&tensu1[i][j]);
    }
    }
    对于(i=0;i<3;i++){
    对于(j=0;j<4;j++){
    printf(“请输入第二个矩阵第%D行第%D列的数: “,i+1,j+1);
    scanf(“%d”、&tensu2[i][j]);
    }
    }
    /*计算结果*/
    对于(i=0;i<4;i++){
    对于(j=0;j<4;j++){
    对于(k=0;k<3;k++)
    tensu3[i][j]=tensu1[i][k]*tensu2[k][i]+tensu3[i][j];
    }
    }
    /*显示结果*/
    printf(“第一个矩阵是:\n”);
    对于(i=0;i<4;i++){
    putchar(“|”);
    对于(j=0;j<3;j++){
    printf(“%4d”,tensu1[i][j]);
    }
    putchar(“|”);
    putchar('\n');
    }
    printf(“第二个矩阵是:\n”);
    对于(i=0;i<3;i++){
    putchar(“|”);
    对于(j=0;j<4;j++){
    printf(“%4d”,tensu1[i][j]);
    }
    putchar(“|”);
    putchar('\n');
    }
    printf(“矩阵的结果是:\n”);
    对于(i=0;i<4;i++){
    putchar(“|”);
    对于(j=0;j<4;j++){
    printf(“%4d”,tensu3[i][j]);
    }
    putchar(“|”);
    putchar('\n');
    }
    返回0;
    }
    
    在使用变量的值之前,必须先为变量赋值。在赋值之前,必须先使用
    tensu3
    中的值,这样就可以将这些值添加到它们碰巧拥有的任何垃圾值中。

    我在代码中编辑了这些值。替换它

    /*计算结果*/

    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];
        }
    }
    
    (i=0;i<4;i++)的
    {
    对于(j=0;j<4;j++){
    tensu3[i][j]=0;
    对于(k=0;k<3;k++)
    tensu3[i][j]+=tensu1[i][j]*tensu2[k][j];
    }
    }
    
    由于您的提及,我发现了问题所在!当我使用代码“tensu3[I][j]=tensu1[I][k]*tensu2[k][I]+tensu3[I][j]”时,我不小心忽略了这一点,我已经使用了该值……感谢您的帮助!