C语言实现矩阵乘法(4*5乘以5*3)
1 #include <stdio.h> 2 3 void calcu_maxtrix(int a[3][4],int b[4][2]) 4 { 5 int c[3][2]; 6 for (int i=0;i<3;i++) 7 { 8 int k; 9 10 for (int j=0;j<2;j++) 11 { 12 int temp=0; 13 for(k=0;k<4;k++) 14 { 15 temp=temp+a[i][k]*b[k][j]; 16 } 17 c[i][j] = temp; 18 printf("%d\t", c[i][j]); 19 } 20 21 printf("\n"); 22 } 23 24 } 25 26 void main() 27 { 28 int a[3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}}; 29 int b[4][2]={{1,2},{1,2},{1,2},{1,2}}; 30 calcu_maxtrix(a,b); 31 }
i,j分别为乘积的行数,列数,k控制每一个c[i][j]的元素为乘积和,计算成功一个c[i][j]后输出,并附带一个制表符,计算完一列后,输出一个换行符。
结果:
可以从键盘输入数据的形式:
1 #include <stdio.h> 2 3 void calcu_maxtrix(int a[3][4],int b[4][2]) 4 { 5 int c[3][2]; 6 for (int i=0;i<3;i++) 7 { 8 int k; 9 for (int j=0;j<2;j++) 10 { 11 int temp=0; 12 for(k=0;k<4;k++) 13 { 14 temp=temp+a[i][k]*b[k][j]; 15 } 16 c[i][j] = temp; 17 printf("%d\t", c[i][j]); 18 } 19 20 printf("\n"); 21 } 22 23 } 24 25 void main() 26 { 27 int i,j,m,n; 28 int a[3][4]; 29 printf("请输入第一个数组:\n"); 30 for(i=0;i<3;i++) 31 for (j=0;j<4;j++) 32 scanf("%d",&a[i][j]); 33 34 35 int b[4][2]; 36 printf("请输入第二个数组:\n"); 37 for(m=0;m<4;m++) 38 for (n=0;n<2;n++) 39 scanf("%d",&b[m][n]); 40 printf("乘积矩阵为:\n"); 41 calcu_maxtrix(a,b); 42 } 43 /* 44 int a[3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}}; 45 int b[4][2]={{1,2},{1,2},{1,2},{1,2}}; 46 */
一个不小心,将第二个数据也赋值给a了,要避免失误。。
结果: