當前位置:編程學習大全網 - 編程語言 - 跪求C語言高手~~~ 矩陣相乘 動態數組!!!!!!!!!!!!

跪求C語言高手~~~ 矩陣相乘 動態數組!!!!!!!!!!!!

#include<stdio.h>

#include<malloc.h>

void?main()

{

int?**mata=NULL,**matb=NULL,ar,ac,br,bc,i,j,k,**matres=NULL;//矩陣a,b,a的行,a的列,b的行,b的列,循環變量i,j,k,相乘的結果

scanf("%d%d",&ar,&ac);//接受矩

陣a的行列值

if(!(mata=(int**)malloc(ar*sizeof(int))))

{

printf("Not?Enough?Memory!");?//內存不足malloc會返回NULL

return;

}

for(i=0;i<ac;i++)

{

if(!(mata[i]=(int*)malloc(ac*sizeof(int))))

{

printf("Not?Enough?Memory!");?//內存不足malloc會返回NULL

return;

}

}

for(i=0;i<ar;i++)

for(j=0;j<ac;j++)

scanf("%d",&mata[i][j]);

scanf("%d%d",&br,&bc);////接受矩陣b的行列值

if(ac!=br)

{

printf("Matrix?Can't?Multiply!");

return;

}

if(!(matb=(int**)malloc(br*sizeof(int))))

{

printf("Not?Enough?Memory!");?//內存不足malloc會返回NULL

return;

}

for(i=0;i<bc;i++)

{

if(!(matb[i]=(int*)malloc(bc*sizeof(int))))

{

printf("Not?Enough?Memory!");?//內存不足malloc會返回NULL

return;

}

}

for(i=0;i<br;i++)

for(j=0;j<bc;j++)

scanf("%d",&matb[i][j]);

if(!(matres=(int**)malloc(ar*sizeof(int))))

{

printf("Not?Enough?Memory!");?//內存不足malloc會返回NULL

return;

}

for(i=0;i<bc;i++)

{

if(!(matres[i]=(int*)malloc(bc*sizeof(int))))

{

printf("Not?Enough?Memory!");?//內存不足malloc會返回NULL

return;

}

}

for(i=0;i<ar;i++)

for(j=0;j<bc;j++)

matres[i][j]=0;//初始化0

/*計算*/

for(i=0;i<ar;i++)

for(j=0;j<bc;j++)

for(k=0;k<ac;k++)

matres[i][j]+=mata[i][k]*matb[k][j];

/*輸出*/

for(i=0;i<ar;i++)

{

for(j=0;j<bc;j++)

printf("%d? ",matres[i][j]);

printf("\n");

}

}

  • 上一篇:IPFS和區塊鏈有什麽區別?Lava是什麽?
  • 下一篇:如何將word文檔轉換成pdf格式(4種輕松將文檔轉換成pdf文件的方法)
  • copyright 2024編程學習大全網