检验并打印幻方矩阵

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



输入格式:

"%d"

输出格式:

如果是幻方矩阵,屏幕输出——

"It is a magic square!\n"

矩阵元素的输出: "%4d"(换行使用"\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!

#include<stdio.h>

const int MAX = 5;
int Fun(int a[][MAX]);
int main()
{
	int a[MAX][MAX] ;
	for (int i = 0; i < MAX; i++)
	for (int 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;
}
int Fun(int a[][MAX])
{
	int s1, s2, sum;

	sum = 0;
	for (int i = 0; i<MAX; i++)
	for (int j = 0; j<MAX; j++)
		sum += a[i][j];

	sum /= MAX;

	for (int i = 0; i<MAX; i++)
	{
		s1 = s2 = 0;
		for (int j = 0; j<MAX; j++)//判断每一行每一列
		{
			s1 += a[i][j];
			s2 += a[j][i];
		}
		if (s1 != sum || s2 != sum)
		{
			return 0;
		}
	}
	s1 = s2 = 0;
	for (int i = 0; i<MAX; i++)//判断每一撇:主对角线
	{
		s1 += a[i][i];
		s2 += a[i][MAX - i - 1];
	}
	if (s1 != sum || s2 != sum)
		return 0;
	return 1;
}


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值