#include<stdio.h>
int main()
{
int a[10][10],n,flag=1;
printf("请输入矩阵的阶数(<=10):");
scanf("%d",&n);
printf("请输入矩阵:\n");
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("a[%d][%d]:",i,j);
scanf("%d",&a[i][j]);
}
}
int sum=0,s1[10],s2[10],s3=0,s4=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
sum+=a[i][j];
}
s1[i]=sum;//将每一行的和保存到s1数组中
sum=0;
}
for(j=0;j<n;j++)
{
for(i=0;i<n;i++)
{
sum+=a[i][j];
}
s2[j]=sum;将每列的和保存到s2数组中
sum=0;
}
for(i=0;i<n;i++)
{
s3+=a[i][i];//主对角线之和
s4+=a[i][n-i-1];//副对角线之和
}
for(i=0;i<n;i++)
{
if(s1[0]!=s1[i]) flag=0;//让每一行之和相等
if(s2[0]!=s2[i]) flag=0;//让每一列之和相等
if(s1[0]!=s2[0]) flag=0;//让行之和与列之和相等
if(s1[0]!=s3) flag=0;//让行之和与主对角线之和相等
if(s1[0]!=s4) flag=0;//让行之和与副对角线之和相等
}
if(flag==1) printf("该矩阵为魔方矩阵!");
else printf("该矩阵不是魔方阵!\n");
return 0;
}