思路:开辟一个新的同样规格的矩阵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;
}
运行结果: