【C語言練習題】判斷單位矩陣
阿新 • • 發佈:2018-12-31
《C和指標》習題8.8
問題
3.單位矩陣就是一個正方形矩陣,它除了主對角線元素值為1以外,其餘元素的值均為0,例如:
*1 0 0
*0 1 0
*0 0 1
*就是一個3×3單位矩陣,編寫一個名叫identity_matrix的函式,它接受一個10×10整型矩陣為引數
*成功返回1,失敗返回1
4、修改前一個問題中的identity_matrix函式,它可以對陣列進行擴充套件,從而能夠接受任意大小的矩陣引數。函式的第一個引數應該是一個整型指標,你需要第二個引數,用於指定矩陣的大小。
程式碼
#include <stdio.h> #define N 10 int identity_matrix( int (*matrix)[N] ); int identity_matrix_new( int *matrix, int number ); void main(void) { int matrix[][N] = {//這是一個10*10的單位矩陣 { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, }; int result = identity_matrix( matrix ); //方式1 if( 0 == result ) printf("sucess!!!\n"); else printf("failed!!\n"); result = identity_matrix_new( matrix, 10 ); //方式2 if( 0 == result ) printf("sucess!!!\n"); else printf("failed!!\n"); } /* *判斷單位矩陣 階數固定為10 *輸入: matrix指標陣列 *返回:0成功 1失敗 */ int identity_matrix( int (*matrix)[N] ) { int i=0,j=0; for(i=0;i<N;i++) { for(j=0;j<N;j++) { if( i == j && matrix[i][j] != 1 ) return 1; else if( i != j && matrix[i][j] !=0 ) return 1; } } return 0; } /* *判斷單位矩陣new 指定階數 *輸入: matrix整形指標 number矩陣階數 *返回:0成功 1失敗 */ int identity_matrix_new( int *matrix, int number ) { int i=0,j=0; for(i=0;i<number;i++) { for(j=0;j<number;j++) { if( i == j && *(matrix+i*number+j) != 1 ) return 1; else if( i != j && *(matrix+i*number+j) !=0 ) return 1; } } return 0; }
展示