矩陣相乘(C語言實現)


---恢復內容開始---

矩陣相乘程序的簡單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:

  由於該矩陣是用二維數組存儲,並不是用鏈表或其他結構,效率可能較低,尤其是對於稀疏矩陣的情況。

    程序在devcpp中編譯通過。

                                                   2016-10-21     23:49:14


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM