中易网

求 c语言 输出 1到n^2的自然数构成的魔方阵。

答案:2  悬赏:0  
解决时间 2021-03-02 15:19
题目源自c语言程序设计(非计算机专业)谭志强版。
练习题所属章节--数组。
题目并未介绍魔方阵排列规律(如:将1放在第一行中间一列等).
也未声明n是否奇数偶数。
求可靠解答
最佳答案
魔方阵是用来锻炼学生的对二维数组元素的精确控制能力的。算法如下

魔方阵的排列规律如下:
⑴将1放在第一行中间一列;
⑵从2开始直到n×n止各数依次按下列规则存放;每一个数存放的行比前一个数的行数减1,列数加1(例如三阶魔方阵,5在4的上一行后一列);
⑶如果上一个数的行数为1,则下一个数的行数为n(指最下一行);例如1在第一行,则2应放在最下一行,列数同样加1;
⑷当上一个数的列数为n时,下一个数的列数应为1,行数减去1。例如2在第3行最后一列,则3应放在第二行第一列;
⑸如果按上面规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。例如按上面的规定,4应该放在第1行第2列,但该位置已经被占据,所以4就放在3的下面;
全部回答
//windowsxp  vc++6.0  #include<stdio.h> int main() {  int buf[256][256]={0};  int i=0,j=0,n,count;  scanf("%d",&n);  count=buf[0][0]=1;  while(count<n*n)  {   while(j+1<n&&!buf[i][j+1])    buf[i][++j]=++count;   while(i+1<n&&!buf[i+1][j])    buf[++i][j]=++count;   while(j-1>=0&&!buf[i][j-1])    buf[i][--j]=++count;   while(i-1>=0&&!buf[i-1][j])    buf[--i][j]=++count;  }  for(i=0;i<n;i++)  {   for(j=0;j<n;j++)   {    printf("%4d",buf[i][j]);   }   printf("\n");  }  return 0; }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
求《守护者联盟》中文字幕下载!!
青丘狐传说游戏和天天有喜游戏哪个好玩一点
求83版简爱4集全,土豆上我下载不下来希望哪
奋斗路/边疆南路(路口)在哪里啊,我有事要去
求男士外套比较好品牌?
如果手里有两个电话号码你会选:1,移动加电
佳丽海鲜大酒楼环岛路店地址在什么地方,想过
孩子是怀柔户口可以在顺义入学吗
2G频点优化用什么软件
英文歌《嫁个亿万富翁》
美泊莱汽车维修中心怎么去啊,有知道地址的么
《坏女人》歌词?
文胸上面只写的有C75,不知道是什么意思?
满口香熟食我想知道这个在什么地方
一首诗里同时出现雪字和娇字
推荐资讯
婚庆策划怎么宣传
日本第一部特摄作品是什么
我想问一下,我想采购一批小批量的导热硅胶垫
刚出生20天的小孩拉绿屎怎么回事
求免费外国网站的代理软件,
为什么种群的周期性波动主要发生在高纬度地带
省委家属院5区地址有知道的么?有点事想过去
ISO9000中有要求特殊岗位要统一管理吗?
什么cpu可以流畅吃鸡
邮政大厦地址在哪,我要去那里办事
cf手游哪里有小丑模式
农村享受低保人,他的房屋归谁所有
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?