首页 > 解决方案 > 一般乘法矩阵

问题描述

我写了一个将矩阵相乘的程序。为了测试我输入:

A [1 0, 0 1] and B=[2 2, 2 2]

结果应该是:[2 2, 2 2]. 然而,我得到了[2122123 2, 2 2]. 为什么会这样?也许该值是存储中的地址?

#include <stdio.h>

int main(){
    int A[10][10], B[10][10], C[10][10];
    int n,m,r,s,k,sum,j,i=0;

    printf("Enter the number of rows and columns of first matrix\n");
    scanf("%d%d", &n,&m);
    getchar();
    printf("Enter values:\n");

    for(i=0; i<n;i++){
        for(j=0; j<m; j++){
            scanf("%d", &A[i][j]);
            getchar();
        }
    }

    printf("Enter the number of rows and columns of second matrix\n");
    scanf("%d%d", &r,&s);
    getchar();
    if ( m != r )
        printf("Matrices with entered orders can't be multiplied with each other.\n");

    else{
        printf("Enter values\n");
        for(i=0; i<r;i++){
            for(j=0; j<s; j++){
                scanf("%d", &B[i][j]);
                getchar();
            }
        }
    
        for(i=0; i<n; i++){
            for(j=0; j<s;j++){
                for(k=0;k<r; k++){
                    sum=sum+ A[i][k]*B[k][j];
                }
                C[i][j]=sum;
                sum=0;
            }
        }
        printf("Product of entered matrices:-\n");
        for(i=0; i<n;i++){
            for(j=0; j<s; j++){
                printf("%d\t",C[i][j] );
            }
            printf("\n");
        }
    }

    return 0;
}

总而言之,我考虑维度为 nxm 和 rxs 的矩阵。

标签: cmatrix

解决方案


该行int n,m,r,s,k,sum,j,i=0;未初始化sum0。它只设置i.

循环结束sum = 0;之前设置,而不是之后。k


推荐阅读