矩陣相乘程序的簡單C語言實現:
這是矩陣相乘的公式:
源代碼:
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:
由于該矩陣是用二維數組存儲,并不是用鍊表或其他結構,效率可能較低,尤其是對于稀疏矩陣的情況。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!