欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Tsukinai的第二十七个程序(幻方矩阵的判断)

程序员文章站 2022-07-02 14:47:18
...

Tsukinai的第二十七个程序

检验并打印幻方矩阵。在下面的5×5阶幻方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,
试编写程序将这些幻方矩阵中的元素读到一个二维整型数组中,然后检验其是否为幻方矩阵,并将其按如下格式显示到屏幕上。

17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9

输出提示信息:“It is a magic square!\n”
输出格式:"%4d"(换行使用"\n")

#include <stdio.h>
#include<stdlib.h>
int main()
{
    int i, j, Matrix[5][5],x[12]={0},flag = 1,n=0,m=1;
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5; j++)
        {
            scanf("%d", &Matrix[i][j]);
        }
    }
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5; j++)
        {
            x[n] += Matrix[i][j];
        }
        n++;
    }
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5; j++)
        {
            x[n] += Matrix[j][i];
        }
        n++;
    }
    for (j = 0; j < 5; j++)
    {
        x[n] += Matrix[j][j];
    }
    n++;
        for (j = 4; j >-1; j-- )
        {
            x[n] += Matrix[j][4-j];
        }
    n++;
    for (i = 0; i < 11;i++)
    {
        if(x[i]==x[i+1])
            flag = 1;
        else
        {
            flag = 0;
            break;
        }

    }
        if (flag)
        {
            printf("It is a magic square!\n");
            for (i = 0; i < 5; i++)
            {
                for (j = 0; j < 5; j++)
                {
                    printf("%4d", Matrix[i][j]);
                    if (m % 5 == 0)
                        printf("\n");
                    m++;
                }
            }
        }
        else
            printf("It is not a magic square!\n");
    system("pause");
    return 0;
}

我的做法非常麻烦,尤其是这两个步骤
Tsukinai的第二十七个程序(幻方矩阵的判断)仅仅是j和i换了个位置,如果有大佬帮我简化一下代码,万分感谢!