三阶幻方的判断
数学上把从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; }