矩阵乘法

《C和指针》第8章编程练习第5题:

 1 /*
 2 ** 矩阵相乘
 3 */
 4 
 5 #include <stdio.h>
 6 
 7 /*
 8 ** 函数功能:将矩阵m1与m2相乘,结果保存在矩阵r中
 9 ** 函数参数:m1为x行y列的矩阵,m2为y行z列的矩阵,r为x行z列的矩阵
10 ** 函数没有返回值,结果直接存储在r矩阵中
11 */
12 void
13 matrix_mutiply( int *m1, int *m2, int *r, int x, int y, int z )
14 {
15     int row, col;
16     int i;
17     int multp1, multp2;
18     for( row = 0; row < x; ++ row )
19         for( col = 0; col < z; ++ col )
20         {    
21             *r = 0;
22             for( i = 0; i < y; ++ i )
23             {
24                 multp1 = *( m1 + row * y + i );
25                 multp2 = *( m2 + i * z + col );
26                 *r += multp1 * multp2;
27             }
28             r ++;
29         }
30 }
31 
32 int 
33 main()
34 {
35     int a[3][2] = { 2, -6,
36                     3, 5,
37                     1,-1};
38     int b[2][4] = { 4, -2, -4, -5,
39                     -7, -3, 6, 7 };
40     
41     int c[3][4] = { 0 };
42     
43     matrix_mutiply( &a[0][0], &b[0][0], &c[0][0], 3, 2, 4 );
44     
45     int i, j;
46     for( i = 0; i < 3; ++ i )
47     {
48         for( j = 0; j < 4; ++ j )
49             printf( "%d ", c[i][j] );
50         printf( "\n" );
51     }
52     
53     return 0;
54 }

 

posted on 2014-12-10 11:32  丝工木每  阅读(481)  评论(0编辑  收藏  举报

导航