在下面的5*5阶幻方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些幻方矩阵中的元素读到一个二维整型数组中,然后检验其是否为幻方矩阵,并将其按如下格式显示到屏幕上。
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
#include<stdio.h>
#define n 5
int main()
{
int a[n][n]={{17,24,1,8,15},{23,5,7,14,16},{4,6,13,20,22},{10,12,19,21,3},{11,18,25,2,9}};
int h,l,x,t=1;
int sumh[n],suml[n],sumx1=0,sumx2=0;
for(h=0;h<n;h++)
{
sumh[h]=0;
for(l=0;l<n;l++)
sumh[h]+=a[h][l];
}
for(l=0;l<n;l++)
{
suml[l]=0;
for(h=0;h<n;h++)
suml[l]+=a[l][h];
}
for(h=0;h<n;h++)
sumx1+=a[h][h];
for(h=0;h<n;h++)
sumx2+=a[h][n-1-h];
if(sumx1!=sumx2)
t=0;
else
{
for(h=0;h<n;h++)
{
if((sumh[h]!=sumx1)||(suml[h]!=sumx1))
t=0;
}
}
if(t)
{
printf("是幻方矩阵\n");
for(h=0;h<n;h++)
{
for(l=0;l<n;l++)
printf("%4d",a[h][l]);
printf("\n");
}
}
else
printf("不是幻方矩阵");
return 0;
}