写一个函数求一个二维数组是否是对称的
“水平对称”
“垂直对称”
返回值:返回1 代表对称
返回0 代表不对称
#include <stdio.h>
#define M 4
#define N 3
void Write(int a[][N], int m);
int Sym_horizon(int a[][N], int m);
int Sym_Vertical(int a[][N], int m);
int main(int argc, char *argv[])
{
int a[M][N];
printf("Enter the array with %d figures.\n", N * M);
Write( a, M);
printf("\n - Sym_horizon is %d\n", Sym_horizon( a, M));
printf("\n | Sym_Vertical is %d\n", Sym_Vertical(a, M));
return 0;
}
void Write(int a[][N], int m)
{
int i, j;
for(i = 0; i < M; i++)
{
for(j = 0; j < N; j++)
{
scanf("%d", &a[i][j]);
}
}
}
int Sym_horizon(int a[][N], int m)
{
int i, j;
for(j = 0; j < N /2 ; j++ )
{
for(i = 0; i < M; i++ )
{
if(a[i][j] != a[i][N - j-1])
{
return 0;
}
}
}
return 1;
}
int Sym_Vertical(int a[][N], int m)
{
int i, j;
for(i = 0; i < M / 2; i++)
{
for(j = 0; j < N ; j++)
{
if(a[i][j] != a[M - 1 - i][j])
return 0;
}
}
return 1;
}