编辑代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void MatrixInit (int *p,int rowNum,int colNum);
void MatrixOutput (int*p,int rowNum,int colNum);
void MatrixMultiply (int *matrix1,int *matrix2,int *result,int M,int N,int K);

int main () {
    int M,N,K;
    scanf("%d%d%d",&M,&N,&K);
    printf("M=%d N=%d K=%d\n",M,N,K);
    int *matrix1,*matrix2,*result;
    matrix1=(int*)malloc(M*N*sizeof(int));
    matrix2=(int*)malloc(N*K*sizeof(int));
    result=(int*)malloc(M*K*sizeof(int));
    MatrixInit(matrix1,M,N);
    MatrixInit(matrix2,N,K);
    MatrixMultiply(matrix1,matrix2,result,M,N,K);
    MatrixOutput(matrix1,M,N);
    MatrixOutput(matrix2,N,K);
    MatrixOutput(result,M,K);
}



void MatrixInit (int *p,int rowNum,int colNum){//矩阵随机初始化函数
    int i,j;
    srand((unsigned int)time(NULL));
    for(i=0;i<rowNum;i++){
        for(j=0;j<colNum;j++){
            *(p+i*rowNum+j)=rand()%10;//产生随机数0-9
        }
    }
}

void MatrixOutput (int*p,int rowNum,int colNum){//矩阵输出函数
    int i,j;
    for(i=0;i<rowNum;i++){
        for(j=0;j<colNum;j++){
            printf("%d\t",*(p+i*colNum+j));//循环遍历输出
        }
        printf("\n");
    }
    printf("\n");
}

void MatrixMultiply (int *matrix1,int *matrix2,int *result,int M,int N,int K){
    int sum=0;
    for(int i=0;i<M;i++){
        for(int c=0;c<K;c++){
            *(result+i*K+c) = 0;//结果矩阵的每一位先初始化为0
            for(int j=0;j<N;j++){
                *(result+i*K+c)+= *(matrix1+i*N+j)*(*(matrix2+j*K+c));//矩阵计算
            }
        }
    }
}