在魔方阵中,所有的行、列和对角线都拥有相同的和。例如:
17 24 1 8 15
23 5 7 14 16 4 9 2
4 6 13 20 22 和 3 5 7
10 12 19 21 3 8 1 6
11 18 25 2 9
写一个程序读入一个二维整型数组并判断它是否为魔方矩阵。
**输入格式要求:"%d"
提示信息:"请输入矩阵的阶数(<=10):" "请输入矩阵:\n" "a[%d][%d]:"
**输出格式要求:"该矩阵不是魔方阵!\n" "该矩阵为魔方矩阵
#include<stdio.h>
#include<stdlib.h>
#define N 10
int main()
{
int a[N][N];
int n,i,j,sum,old;
printf("请输入矩阵的阶数(<=10):");
scanf("%d", &n);
printf("请输入矩阵:\n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("a[%d][%d]:",i,j);
scanf("%d",&a[i][j]);
}
}
old=0;
for(i=0;i<n;i++)
{
old+=a[0][i];
}
for (i=0;i<n;i++)
{
sum=0;
for(j=0;j<n;j++)
{
sum=sum+a[i][j];
}
}
if(sum!=old)
{
printf("该矩阵不是魔方阵!\n" );
exit(0);
}
for (i=0;i<n;i++)
{
sum=0;
for(j=0;j<n;j++)
{
sum=sum+a[j][i];
}
}
if(sum!=old)
{
printf("该矩阵不是魔方阵!\n" );
exit(0);
}
sum=0;
for(i=0;i<n;i++)
{
sum=sum+a[i][i];
}
if(sum!=old)
{
printf("该矩阵不是魔方阵!\n" );
exit(0);
}
sum=0;
for(i=0;i<n;i++)
{
sum=sum+a[i][n-i-1];
}
if(sum!=old)
{
printf("该矩阵不是魔方阵!\n" );
exit(0);
}
printf("该矩阵为魔方矩阵!");
}