检验并打印幻方矩阵(4分)
题目内容:
幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个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!
172418**15
235714**16
461320**22
10121921***3
1118252**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!
注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!
(输人样例中“_”代表空格,输出样例中“*”代表空格)
#include<stdio.h>
int main(){
int array[5][5]={0},burray[10]={0};
int m=0,n=0,q=0,rsum=0,lsum=0;
/* 获取二维数组 */
for(int x=0;x<5;x++)
{
for(int y=0;y<5;y++)
{
scanf("%d",&array[x][y]);
}
}
/* end */
for( m=0;m<5;m++)
{
for( n=0;n<5;n++)
{
burray[q]+=array[m][n];//计算每行和,q=0,1,2,3,4
if(m==n)
rsum+=array[m][n];//一条对角线(m=n)和
if(m+n==4)
lsum+=array[m][n];//另外一条对角线和
//printf("%d ",array[m][n]);
}
q++;
for(int q=0;q<5;q++)
{
burray[5+q]+=array[m][q];//计算每列和
}
//printf("\n %d %d %d %d %d ",array[m][0],array[m][1],array[m][2],array[m][3],array[m][4]);
}
int xx=0;
if(lsum==rsum)//在两条对角线和相等情况下,判断行,列和
{
for( xx=1;xx<10;xx++)
{
if(burray[0]!=burray[xx]) //printf("\n%d\n",burray[xx]);
break;
}
}
else
{
printf("It is not a magic square!\n");
return 0;
}
if(xx==10)
{
printf("It is a magic square!\n");
for(int x=0;x<5;x++)
{
for(int y=0;y<5;y++)
{
printf("%4d",array[x][y]);//输出二维数组
}
printf("\n");
}
}
else
printf("It is not a magic square!\n");
return 0;
}