快捷搜索:  汽车  科技

两个矩阵相乘c语言代码(C语言实现矩阵相乘)

两个矩阵相乘c语言代码(C语言实现矩阵相乘)由于该矩阵是用二维数组存储,并不是用链表或其他结构,效率可能较低,尤其是对于稀疏矩阵的情况。相等的话则利用公式计算乘积,结果赋给matrix二维数组。最后用for循环打印出结果验证eg:

矩阵相乘程序的简单C语言实现:

这是矩阵相乘的公式:

两个矩阵相乘c语言代码(C语言实现矩阵相乘)(1)

源代码:

1 #include<stdio.h> 2 #include<stdlib.h> 3 #define M 100 4 5 int main(void) 6 { 7 int i j k matrix1[M][M] matrix2[M][M] row1 col1 row2 col2 matrix[M][M]; 8 /*为需要相乘的两个矩阵赋值:*/ 9 printf("输入第一个矩阵的行数和列数:"); 10 scanf("%d%d" &row1 &col1); 11 printf("输入第一个矩阵:\n"); 12 for(i=0;i<row1;i ){ 13 for(j=0;j<col1;j ){ 14 scanf("%d" &matrix1[i][j]); 15 } 16 } 17 printf("输入第二个矩阵的行数和列数:"); 18 scanf("%d%d" &row2 &col2); 19 printf("输入第二个矩阵:\n"); 20 for(i=0;i<row2;i ){ 21 for(j=0;j<col2;j ){ 22 scanf("%d" &matrix2[i][j]); 23 } 24 } 25 /*初始化matrix:*/ 26 for(i=0;i<row1;i ){ 27 for(j=0;j<col2;j ){ 28 matrix[i][j]=0; 29 } 30 } 31 32 if(col1!=row2){ 33 fprintf(stderr "enput error!"); 34 exit(EXIT_FAILURE); 35 } 36 printf("The result:\n"); 37 for(i=0;i<row1;i ){ 38 for(j=0;j<col2;j ){ 39 for(k=0;k<col1;k ){ 40 matrix[i][j]=matrix[i][j] matrix1[i][k]*matrix2[k][j]; 41 } 42 } 43 } 44 45 for(i=0;i<row1;i ){ 46 for(j=0;j<col2;j ){ 47 printf("%d " matrix[i][j]); 48 } 49 printf("\n"); 50 } 51 return 0; 52 }

程序中先初始化矩阵,然后判断第一个矩阵的列数和第二个矩阵的行数是否相等,如果不相等则直接提示错误后退出程序

相等的话则利用公式计算乘积,结果赋给matrix二维数组。

最后用for循环打印出结果验证

eg:

两个矩阵相乘c语言代码(C语言实现矩阵相乘)(2)

由于该矩阵是用二维数组存储,并不是用链表或其他结构,效率可能较低,尤其是对于稀疏矩阵的情况。

猜您喜欢: