4检验并打印幻方矩阵。

来源:互联网 发布:轩辕剑神掌进阶数据 编辑:程序博客网 时间:2024/06/05 15:58

题目内容:

幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个5×5的矩阵并将其存入一个二维整型数组中,检验其是否为幻方矩阵,并将其按指定格式显示到屏幕上。

输入格式: "%d"

输出格式:

如果是幻方矩阵,输出提示信息: "It is a magic square!\n"

矩阵元素的输出: "%4d"(换行使用"\n")

如果不是幻方矩阵,输出提示信息: "It is not a magic square!\n"

输入样例1:

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

(输人样例中“_”代表空格)

输出样例1:

It is a magic square!

**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

(输出样例中“*”代表空格)

输入样例2:

1_0_1_6_1

3_1_1_1_1

1_1_1_1_2

1_1_1_1_1

9_1_7_1_1

(输人样例中“_”代表空格)

输出样例2:

It is not a magic square!

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

(输人样例中“_”代表空格,输出样例中“*”代表空格)

时间限制:500ms内存限制:32000kb

#include <stdio.h>#define N 5int input(int mag[][N],int n);int judge(int a[][N],int n);int print(int mag[][N],int n);main(){    int mag[N][N];    int ret;    input(mag,N);    ret=judge(mag,N);    if(ret==0)    printf("It is not a magic square!\n");    else{        printf("It is a magic square!\n");        print(mag,N);        }    return 0;}int input(int mag[][N],int n){    int i,j;    for(i=0;i<n;i++)    for(j=0;j<n;j++)        scanf("%d",&mag[i][j]);}int judge(int a[][N],int n){    int i,j,k;    int sum[12]={0};    for(i=0;i<n;i++)    for(j=0;j<n;j++)        sum[i]=sum[i]+a[i][j];    for(j=0;j<n;j++)    for(i=0;i<n;i++)        sum[j+5]=sum[j+5]+a[i][j];    for(i=0;i<n;i++)    {        sum[10]=sum[10]+a[i][i];    }    for(i=0;i<n;i++)    for(j=0;j<n;j++)    {        if((i+j) == 4)        sum[11]=sum[11]+a[i][j];    }    for(k=1;k<12;k++)    {        if(sum[0]!=sum[k])        return 0;    }    return 1;}int print(int mag[][N],int n){    int i,j;    for(i=0;i<n;i++)    {      for(j=0;j<n;j++)        printf("%4d",mag[i][j]);      printf("\n");    }}

0 0
原创粉丝点击