判断一个10*10的矩阵是否为单位矩阵

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

 1 /*
 2 ** 判断一个10*10的矩阵是否为单位矩阵
 3 */
 4 
 5 #include <stdio.h>
 6 #define  ROW  10
 7 #define  COL  10
 8 
 9 /*
10 ** 函数接受一个10*10的矩阵
11 ** 判断其是否为单位矩阵
12 ** 返回值:
13 **      是单位矩阵,返回1
14 **      不是单位矩阵,返回0
15 */
16 int 
17 indentity_matrix( int (*matrix) [10] )
18 {
19     int row, col;
20     for( row = 0; row < ROW; ++ row )
21         for( col = 0; col < COL; ++ col )
22         {
23             // 如果对角线上出现不是1的数,返回0
24             if( col == row && matrix[row][col] != 1 )
25                 return 0;
26             // 如果其余位置出现不是0的数,返回0
27             if( col != row && matrix[row][col] != 0 )
28                 return 0;
29             /*
30             ** 上面两个if语句可合并成以下形式:
31             ** if( matrix[ row ][ col ] != ( row == col ) )
32             **     return 0;
33             */
34         }
35     
36     // 能够执行到这里,说明是单位矩阵,返回1
37     return 1;
38 }
39 
40 int 
41 main()
42 {
43     int m[ROW][COL];
44     int i, j;
45     
46     for( i = 0; i < ROW; ++ i )
47         for( j = 0; j < COL; ++ j )
48             scanf( "%d", *( m + i ) + j );
49     
50     printf( "%d", indentity_matrix( m ) );
51     
52     return 0;
53 }

 

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

导航