《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 }