三阶幻方的判断
数学上把从1到n的平方的连续自然数所排列成的方阵且任一行、任一列及任一对角线的数字之和相同的矩阵称为n阶“幻方”。从键盘输入一个3*3的数字方阵,判断是否一个合格的幻方,合格就输出Yes,不合格就输出No。4 9 2
3 5 7
8 1 6
三阶幻方就是大家熟悉的“九宫格”。如左图:用1到9的9个连续自然数排成9格3行的图,任一行、任一列及任一角线的3个数字之和都是15。
程序代码:#include<stdio.h>
int main()
{
int a[3][3];
int b[10]={0};
int i=0;
int j=0;
int flag=0;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
if (++b[a[i][j]]>1||a[i][j]<1||a[i][j]>9)
flag=1;//判断有没有输入重复
}
for (i=0;i<3;i++)
if (a[i][0]+a[i][1]+a[i][2]!=15)
break;
for (j=0;j<3;j++)
if (a[0][j]+a[1][j]+a[2][j]!=15)
break;
if (i!=3||j!=3||flag)
printf("No!\n");
else if (a[0][0]+a[1][1]+a[2][2]!=15||a[0][2]+a[1][1]+a[2][0]!=15)
printf("No!\n");
else
printf("Yes\n");
return 0;
}
