在下面的5×5阶魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维整型数组中,然后检验其是否为魔方矩阵,并将其按如下格式显示到屏幕上。
#include<stdio.h>
#define X 5
#define Y 5
int main() {
int a[X][Y] = {0}, i, j, s1 = 0, s2 = 0, s3 = 0, s4 = 0;
for (int i = 0; i < 5; i++) {//输入数据
for (j = 0; j < 5; j++) {
printf("请输入数据:");
scanf("%d", &a[i][j]);
}
}
for ( i = 0; i < X; i++) {//计算行和、列和
for (j = 0; j < Y; j++) {
s1 = s1 + a[i][j];
s2 = s2 + a[j][i];
}
for (int i = 0; i < X; i++) {//计算对角线和
for (j = 0; j < Y; j++) {
s3 = s3 + a[i][i];
s4 = s4 + a[i][5 - 1 - i];
}
}
}
if (s1 != s2) {//行和不等于列和
printf("不是魔方矩阵。\n");
for (int i = 0; i < X; i++) {
for (j = 0; j < Y; j++) {
printf("%-4d", a[i][j]);
}
printf("\n");
}
} else if (s3 != s4) {//对角线和不等
printf("不是魔方矩阵。\n");
for (int i = 0; i < X; i++) {
for (j = 0; j < Y; j++) {
printf("%-4d", a[i][j]);
}
printf("\n");
}
} else {
printf("是魔方矩阵。\n");
for (int i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
printf("%-4d", a[i][j]);
}
printf("\n");
}
}
return 0;
}
运行结果