bool foo()
{
int a[100][100];
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",a[i][j]);
}
}
int sum = 0;
int sum1 = 0;
for (i = 0; i < n; i++) sum += a[i][0];
for (j = 0; j < n; j++)
{
sum1 = 0;
for (i = 0; i < n; i++) sum1 += a[i][j];
if (sum1 != sum) return false;
sum1 = 0;
for (i = 0; i < n; i++) sum1 += a[j][i];
if (sum1 != sum) return false;
}
sum1 = 0;
for (i = 0; i < n; i++) sum1 += a[i][i];
if (sum1 != sum) return false;
sum1 = 0;
for (i = 0; i < n; i++) sum1 += a[i][n - i];
if (sum1 != sum) return false;
return true;
}
主程序
int n = 4;
int main()
{
if (foo()) printf("yes"); else printf("no");
}
首先你的把这些数字输入到相应的二维数组中,然后
分别通过观察(找公式)并计算两个对角线的值和每一行的值以及每一列的值,如果有一个不相等,那直接输出“非魔方”!break;
否则
相等,你可以输出二维数组的值就行!