#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;
}
}
}
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;
for(int j=0;j<N;j++){
*(result+i*K+c)+= *(matrix1+i*N+j)*(*(matrix2+j*K+c));
}
}
}
}