@chawuciren
2018-10-16T12:42:22.000000Z
字数 1426
阅读 744
CSI
#include<stdlib.h>
#include<stdio.h>
void FreeMatrix(int** mat);//释放
int** CreatMatrix(int row,int col); //建立
int** Malloc(int row,int col);//申请空间
void Free(int** a);
int** CreatMatrix(int row,int col){
int** matrix=(int **)malloc(sizeof(int*) * row);
for(int i=0;i<row;i++){
matrix[i]=(int *)malloc(sizeof(int) * col);
}
return matrix;
}
int** Malloc(int row,int col){
int** ret=(int **)malloc(sizeof(int*) * row);
int* p=(int *)malloc(sizeof(int)*row*col);
int i=0;
if(ret&&p){
for(i=0;i<row;++i){
ret[i]=(p+col*i);
}
}
else{
free(ret);
free(p);
return 0;
}
return ret;
}
void Free(int** a){
free(a[0]);
free(a);
}
void FreeMatrix(int** mat){
free(mat[0]);
free(mat);
}
int main(){
int row=5,col=5;
int** matrixa=CreatMatrix(row,col);//建立矩阵a
int** matrixb=CreatMatrix(row,col);//建立矩阵b
int** matrixc=CreatMatrix(row,col);//建立矩阵c
for(int i=0;i<row;i++){ //输入第一个矩阵
for(int j=0;j<row;j++){
printf("input a[%d][%d]:\n",i,j);
scanf("%d",&matrixa[i][j]);
}
}
for(int i=0;i<row;i++){ //输入第二个矩阵
for(int j=0;j<row;j++){
printf("input b[%d][%d]:\n",i,j);
scanf("%d",&matrixb[i][j]);
}
}
for(int i=0;i<row;i++){ // 两个矩阵相乗等于c
for(int j=0;j<row;j++){
for(int k=0;k<row;k++){
matrixc[i][j]=matrixa[i][k]*matrixb[k][j];
}
}
}
for(int j=0;j<row;j++) //输出
printf("%d",matrixc[0][j]);
for(int j=0;j<row;j++)
printf("%d",matrixc[1][j]);
for(int j=0;j<row;j++)
printf("%d",matrixc[2][j]);
for(int j=0;j<row;j++)
printf("%d",matrixc[3][j]);
for(int j=0;j<row;j++)
printf("%d",matrixc[4][j]);
FreeMatrix(matrixa);//释放
FreeMatrix(matrixb);
FreeMatrix(matrixc);
return 0;
}
在此输入正文