矩阵的乘积怎么编代码啊

img

你好,输入输出,可以这么写

#include<stdio.h>
int const m=4, n=3;
int main(){
    double a[m][n], b[n][m], c[m][m];
    int i,j,k;
    for(i=0;i<m;i++)for(j=0;j<n;j++){
        printf("请输入矩阵A的第%d行第%d列的值:\n",i+1,j+1);
        scanf("%lf",&a[i][j]);
    }
    for(i=0;i<n;i++)for(j=0;j<m;j++){
        printf("请输入矩阵B的第%d行第%d列的值:\n",i+1,j+1);
        scanf("%lf", &b[i][j]);
    }
    for(i=0;i<m;i++)for(k=0;k<m;k++)c[i][k]=0;//赋初值 
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            for(k=0;k<m;k++) c[i][k] = c[i][k] + a[i][j]*b[j][k];//计算矩阵乘法
        }
    }

    printf("C=\n");//开始打印矩阵乘积
    for(i=0;i<m;i++){ for(k=0;k<m;k++){
        printf("%lf ",c[i][k]);
    }
    printf("\n");//换行打印 
    } 
} 
     
    

 

请看这个页面下半部分的相关推荐。

供参考:

#include<stdio.h>
#define M 4            //第一个矩阵的行数 、第二个矩阵的列数
#define N 3            //第一个矩阵的列数 、第二个矩阵的行数
int main()
{
    int a[M][N],b[N][M],c[M][M]={0};

    int i,j,k;

    printf("输入%d行%d列矩阵:",M,N);
    for(i = 0;i<M;i++)
        for(j = 0;j<N;j++)
            scanf("%d",&a[i][j]);

    printf("输入%d行%d列矩阵:",N,M);
    for(i = 0;i<N;i++)
        for(j = 0;j<M;j++)
            scanf("%d",&b[i][j]);

    printf("\n%d行%d列矩阵:\n",M,N);
    for(i = 0;i<M;i++){
        for(j = 0;j<N;j++)
            printf("%d\t",a[i][j]);
        printf("\n");
    }

    printf("\n--------*---------\n");
    printf("--------*---------\n");

    printf("\n%d行%d列矩阵:\n",N,M);
    for(i = 0;i<N;i++){
        for(j = 0;j<M;j++)
            printf("%d\t",b[i][j]);
        printf("\n");
    }

    for(i = 0;i<M;i++)
        for(j = 0;j<M;j++)
            for(k = 0;k<N;k++)
                c[i][j] += a[i][k]*b[k][j];//两矩阵相乘结果存入矩阵 C[][]

    printf("\n两矩阵相乘得到新矩阵:\n");
    for(i = 0;i<M;i++){
        for(j = 0;j<M;j++)
            printf("%d\t",c[i][j]);
        printf("\n");
    }
    return 0;
}