前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >奇数阶魔方阵

奇数阶魔方阵

作者头像
lop
发布2019-03-13 16:57:00
1K0
发布2019-03-13 16:57:00
举报
文章被收录于专栏:小六小六

印"魔方阵"。所谓"魔方阵"是指这样的方阵,它的每一行、每一列以及对角线之和均相等。例如,三阶魔方阵为: 8   1   6 3   5   7 4   9   2 要求打印由1到n*n的奇数构成的魔方阵。(魔方阵.C)     分析:魔方阵中各数的排列规律如下: (1) 将"1"放在第一行中间一列; (2) 从"2"开始直到n*n止各数依次按下列规则存放:每一个数存放的     行比前一个数的行数减1,列数加1; (3) 如果上一数的行数为1,则下一数的列数为n(指最下一行); (4) 当上一个数的列数为n时,下一个数的列数应为1,行数减1; (5) 如果按上面规则确定的位置上已有数,或上一个数是第一行第n列

    时,则把下一个数放在上一个数的下面.

代码语言:javascript
复制
#include <stdio.h>

int main(void)
{
	static int a[21][21], i, j, n;
	int k;

	scanf("%d", &n);
	j = n / 2 + 1; i = 1;
	a[i][j] = 1; 	
	for (k = 2; k <= n * n; k++)
	{
		if ((a[i - 1][j + 1] != 0) || (i - 1 == 0) && (j + 1 == n + 1))
		{
			j; i += 1;
		}
		else
		{
			i--; j++;
			if (i == 0) i = n;
			if (j == n + 1) j = 1;
		}
		a[i][j] = k;
	}
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= n; j++)
			printf("%d\t", a[i][j]);
		printf("\n");
	}
	return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年02月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档