輸入 n 階方陣,判斷每行、每列、主對角線、副對角線之和是否相等(魔方陣)。
n 及矩陣元素。sum。sum。false,全等返回 true。bool isMagicSquare(int n) {
int a[100][100];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
scanf("%d", &a[i][j]);
int sum = 0;
for (int j = 0; j < n; j++) sum += a[0][j]; // 基準和
// 行
for (int i = 0; i < n; i++) {
int rowSum = 0;
for (int j = 0; j < n; j++) rowSum += a[i][j];
if (rowSum != sum) return false;
}
// 列
for (int j = 0; j < n; j++) {
int colSum = 0;
for (int i = 0; i < n; i++) colSum += a[i][j];
if (colSum != sum) return false;
}
// 主對角線
int diag1 = 0;
for (int i = 0; i < n; i++) diag1 += a[i][i];
if (diag1 != sum) return false;
// 副對角線
int diag2 = 0;
for (int i = 0; i < n; i++) diag2 += a[i][n - 1 - i];
if (diag2 != sum) return false;
return true;
}
scanf("%d", a[i][j]) 缺少 &,已修正。[i][n-1-i],原代碼 [i][n-i] 越界。