#include <stdio.h>
#define N 3
//返回值1:满足,0:不满足
//注意二维数组必须指定列数
int fun(int a[][N])
{
int i,j,s,k;
int *p=a;
//判断是否有重复数字
for(i=0;i<N*N;i++)
{
for(j=i+1;j<N*N;j++)
if(*(p+i)==*(p+j))return 0;
}
//判断对角线
s=a[0][0]+a[1][1]+a[2][2];
k=a[2][0]+a[1][1]+a[0][2];
if(s!=k) return 0;
//判断行是否满足
for(i=0;i<N;i++)
{
k=0;
for(j=0;j<N;j++) k=k+a[i][j];
if(k!=s) return 0;
}
//判断列是否满足
for(j=0;j<N;j++)
{
k=0;
for(i=0;i<N;i++) k=k+a[i][j];
if(k!=s) return 0;
}
return 1;
}
//用于测试
int main()
{
int a[3][3];
a[0][0]=2;
a[0][1]=9;
a[0][2]=4;
a[1][0]=7;
a[1][1]=5;
a[1][2]=3;
a[2][0]=6;
a[2][1]=1;
a[2][2]=8;
printf("%d",fun(a));
}