#include <stdio.h>#define N 4#include <stdlib.h>void get(int a[N][N]){ int i=0,j=0; for(i=0;i<N;i++){ for(j=0;j<N;j++){ scanf("%d",&a[i][j]); } }}void put(int a[N][N]){ int i=0,j=0; for(i=0;i<N;i++){ for(j=0;j<N;j++){ printf("%d ",a[i][j]); } printf("\n"); }}int f(int a[][N]){ int i=0,j=0,k=0; for(i=0;i<N;i++){ for(j=0;j<N;j++){ if(a[j][i]){ for(k=0;k<N;k++){ a[j][k]=a[j][k]|a[i][k]; } } } }}int main(){ int a[N][N]={0}; get(a); f(a); put(a); system("pause"); return 0;}
get是从终端输入数据来填充二维数组,put是显示二维数组的内容。
f函数,如果某个元素a[j][i]不等于0,就把第j行的所有元素重新赋值,a[j][k]元素的值是a[j][k]的值与a[i][k]的值按位相与的结果。
get是获取,put是展示。其他都是简单的控制台输入输出。