幻方矩陣是指該矩陣中每一行、每一列、每一對角線上的元素之和都是相等的。從鍵盤輸入一個5×5的矩陣並將其存入一個二維整型數組中,檢驗其是否為幻方矩陣,並將其按指定格式顯示到屏幕上。
輸入格式: "%d"
輸出格式:
如果是幻方矩陣,輸出提示信息: "It is a magic square!\n"
矩陣元素的輸出: "%4d"(換行使用"\n")
如果不是幻方矩陣,輸出提示信息: "It is not a magic square!\n"
#include<stdio.h>
#define MAX 5
int Fun(int a[MAX][MAX])
{
int s1, s2, sum;
int i, j;
sum = 0;
for (i = 0; i<MAX; i++)
for (j = 0; j<MAX; j++)
sum += a[i][j];
sum /= MAX;
for (i = 0; i<MAX; i++)
{
s1 = s2 = 0;
for (j = 0; j<MAX; j++)//判斷每一行每一列
{
s1 += a[i][j];
s2 += a[j][i];
}
if (s1 != sum || s2 != sum)
{
return 0;
}
}
s1 = s2 = 0;
for (i = 0; i<MAX; i++)//判斷每一撇:主對角線
{
s1 += a[i][i];
s2 += a[i][MAX - i - 1];
}
if (s1 != sum || s2 != sum)
return 0;
return 1;
}
int main()
{
int i, j;
int a[MAX][MAX];
for (i = 0; i < MAX; i++)
for (j = 0; j < MAX; j++)
scanf("%d ", &a[i][j]);
if (Fun(a) == 1)
{
printf("It is a magic square!\n");
for (int i = 0; i<MAX; i++)
{
for (int j = 0; j < MAX; j++)
printf("%4d", a[i][j]);
printf("\n");
}
}
else
printf("It is not a magic square!\n");
return 0;
}