判断一个任意大小的矩阵是否为单位矩阵

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

修改前一个问题中的 identity_matrix 函数,它可以对数组进行扩展,从而能够接受任意大小的矩阵参数。函数的第1个参数应该是一个整型指针,你需要第2个参数,用于指定矩阵的大小。

 1 /*
 2 ** 判断一个矩阵是否为单位矩阵
 3 ** 矩阵为任意大小
 4 */
 5 
 6 #include <stdio.h>
 7 #define  SIZE 4
 8 
 9 /*
10 ** 函数接受任意大小矩阵参数,判断它是否为单位矩阵
11 ** 形参:
12 **      第1个参数为一个整型指针,指向矩阵中第一个元素&matric[0][0]
13 **      第2个参数为矩阵的大小
14 ** 返回:
15 **      是单位矩阵,返回1
16 **      不是单位矩阵,返回0
17 */
18 int 
19 indentity_matrix_anysize( int *matrix, int mtx_size )
20 {
21     int row, col;
22     for( row = 0; row < mtx_size; ++ row )
23         for( col = 0; col < mtx_size; ++ col )
24         {
25             if( row == col && *( matrix + row * mtx_size + col ) != 1 )
26                 return 0;
27             if( row != col && *( matrix + row * mtx_size + col ) != 0 )
28                 return 0;
29         }
30     return 1;
31 }
32 
33 int
34 main()
35 {
36     int matrix[SIZE][SIZE];
37     
38     int i, j;
39     for( i = 0; i < SIZE; ++ i )
40         for( j = 0; j < SIZE; ++ j )
41             scanf( "%d", & matrix[i][j] );
42     
43     printf( "%d", indentity_matrix_anysize( matrix[0], SIZE ) );
44     
45     return 0;
46 }

 

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

导航