c語言矩陣
阿新 • • 發佈:2018-11-01
思路:開闢一個新的同樣規格的矩陣b,並將其全部置1.
遍歷矩陣a(原矩陣),發現有0的就在b的此行此列中插入0
// // main.c // test // // Created by 神威 on 2018/9/11. // Copyright © 2018年 神威. All rights reserved. // #include <stdio.h> #define M 6 #define N 5 int main(int argc, const char * argv[]) { int **addOne(int a[M][N]); int i,j; int a[M][N] = { 0,1,1,0,1, 1,1,1,0,1, 1,1,1,1,1, 1,1,1,0,1, 1,1,0,1,0, 1,1,1,1,1 }; printf("\n呼叫函式之後:\n"); int **b = addOne((int **)a); for(i=0;i<M;i++){ for(j=0;j<N;j++) printf("%d\t",*((int *)b+N*i+j)); printf("\n"); } return 0; } int **addOne(int a[M][N]){ int **b =(int **)malloc(M*sizeof(int *));//先申請M個指標型位元組的空間 for (int i=0;i<M;i++) b[i]=(int *)malloc(N*sizeof(int));//然後依次按一維申請 int i,j,x,y; for(i=0;i<M;i++) for(j=0;j<N;j++) *((int *)b+N*i+j)=1; for(i=0;i<N;i++){ for(j=0;j<N;j++){ if(a[i][j]==0){ for(x=0;x<M;x++) *((int *)b+N*x+j) = 0; for(y=0;y<N;y++) *((int *)b+N*i+y) = 0; } } } return b; }
執行結果: