首页 > 技术文章 > C语言检验并打印幻方矩阵

didiaoxiaoguai 2017-04-22 21:35 原文

幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个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;
}

 

推荐阅读