Chinaunix首页 | 论坛 | 博客
  • 博客访问: 916308
  • 博文数量: 177
  • 博客积分: 8613
  • 博客等级: 中将
  • 技术积分: 2835
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-12 04:16
文章分类
文章存档

2012年(12)

2011年(24)

2010年(24)

2009年(75)

2008年(42)

我的朋友

分类: C/C++

2009-07-19 22:07:44

   今天做数组这一章的练习,题目要求做两个矩阵相乘,要求的函数原型是这样的:
matrix_multiply( int *m1, int *m2, register int *r,
int x, int y, int z )
   但是我觉得传给函数的是个矩阵,是多维数组,用*m1 *m2这样的指针不行吧,需要用指向数组的指针吧,于是做了个最原始的实现,嘿嘿:
 
[root@bjxdurs235 20090719]# cat -n matrix_mutiply.c
     1  #include
     2  #define X 3
     3  #define Y 2
     4  #define Z 4
     5
     6  void matrix_multiply( int (*m1)[Y], int (*m2)[Z], int (*r)[Z], int x, int y, int z )
     7  {
     8          int i,j,k;
     9          for ( i = 0; i < x; i++ )
    10          {
    11                  for ( j = 0; j < z; j++ )
    12                  {
    13                          r[i][j] = 0;
    14                          for ( k = 0; k < y; k++ )
    15                          {
    16                                  r[i][j] += m1[i][k] * m2[k][j];
    17                          }
    18
    19                  }
    20
    21          }
    22
    23  }
    24
    25  int main(void)
    26  {
    27          int i,j;
    28          int A[X][Y] = { 2,-16,3,5,1,-1 };
    29          int B[Y][Z] = {
    30                  {4,-2,-4,-5},
    31                  {-7,-3,6,7}
    32          };
    33          int multiply_result[X][Z];
    34          //matrix_multiply(A[X][Y],B[Y][Z],multiply_result[X][Z],X,Y,Z);
    35          matrix_multiply(A,B,multiply_result,X,Y,Z);
    36
    37          for ( i = 0; i < X; i++ )
    38          {
    39                  for ( j = 0; j < Z; j++ )
    40                  {
    41                          printf("%d\t",multiply_result[i][j]);
    42                  }
    43                  printf("\n");
    44          }
    45
    46  }
[root@bjxdurs235 20090719]# ./a.out
120     44      -104    -122
-23     -21     18      20
11      1       -10     -12
 
总结一下:
 
今天看的是数组这一章,看了两遍,还是很有收获的,对于指向数组的指针,指针数组,都了解了,这个小程序虽然实现的简单,但是接触的是给函数传递多维数组的方法,按书上写的。
答案里用指针实现的,我也看了,但是就是不理解main里面怎么调啊,传的可是多维啊,晕。。。
阅读(555) | 评论(0) | 转发(0) |
0

上一篇:反转文章里所有的单词

下一篇:size_t初试

给主人留下些什么吧!~~