C语言二维数组问题 求解

图片

 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;
否则
相等,你可以输出二维数组的值就行!