当前位置:首页 » 编程软件 » 魔方旋转编程

魔方旋转编程

发布时间: 2025-03-30 23:27:52

c语言中魔方阵编程的思路

/*
所谓魔方阵是指这样的的方阵:
它的每一行、每一列和对角线之和均相等。
输入n,要求打印由自然数1到n2的自然数构成的魔方阵(n为奇数)。
例如,当n=3时,魔方阵为:
8 1 6
3 5 7
4 9 2
魔方阵中各数排列规律为:
① 将“1”放在第一行的中间一列;
② 从“2”开始直到n×n为止的各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数同样加1;
③ 如果上一数的行数为1,则下一个数的行数为n(最下一行),如在3×3 方阵中,1在第1行,则2应放在第3行第3列。
④ 当上一个数的列数为n时,下一个数的列数应为1,行数减1。如2在第3行第3列,3应在第2行第1列。

⑤如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。

如按上面的规定,4应放在第1行第2列,但该位置已被1占据,所以4就放在3的下面。由于6是第1行第3列(即最后一列),故7放在6下面。
*/

#include"stdio.h"

void main()
{
int i,n=5;
printf("---------------打印魔方阵-------------\n\n");
int a[5][5];
for( i=0;i<n;i++)
for(int j=0;j<n;j++)
a[i][j]=0;//初始化

i=0;
int j=n/2;
int t=1;
int si=0;
int sj=0;//记录上一个数的位置

while(t<=n*n)
{
//printf("\n%4d\n\n",t);
if(a[i][j]==0)
a[i][j]=t;

else
{
if(si==0 && sj==n-1)
{
a[si+1][sj]=t;
i=si+1;
j=sj;
}
if(si!=n-1)
{
a[si+1][sj]=t;
i=si+1;
j=sj;
}

if(si==n-1)
{
a[0][sj]=t;
i=0;
j=sj;
}
}

si=i;
sj=j;

/*计算下一个元素的位置*/
if(i==0)
i=n-1;
else
i=i-1;

if(j==n-1)
j=0;
else
j=j+1;

t=t+1;
}

for(i=0;i<n;i++)
{
for(int j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("\n\n");
}

}

② 用C语言如何编程打印出由1到n^2的自然数构成的魔方阵,

奇数魔方阵就是将数字排列在nxn(n为奇数)的方阵上,要求满足各行、各列与各对角线的和相同。如下图所示,是n=5的奇数魔方阵。

一般程序语言的阵列多由0开始,为了计算方便,我们利用索引1到n的部份,而在计算是向右(左)上或向下时,我们可以将索引值除以n值,如果得到余数为1就向下,否则就往右(左)上。

③ c语言编程魔方阵顺时针旋转90度编程怎么写 例如: 8 1 6 3 5 7 4 9 2 旋转90度

总的矩阵:[a,a]
某一个点:[i, j]

[0,0] -> [0,a] [0,a] -> [a,a] [a,a] -> [a,0] [a,0] -> [0,0]
其它的:[i, j] -> [j, a-i]

热点内容
gunzip解压文件夹 发布:2025-04-01 21:37:32 浏览:857
c语言实现cd 发布:2025-04-01 21:19:00 浏览:29
u盘文件夹隐藏了 发布:2025-04-01 20:46:44 浏览:515
铁的解压笔 发布:2025-04-01 20:38:01 浏览:864
组培实验室需要配置哪些仪器设备 发布:2025-04-01 20:33:04 浏览:379
安卓手机游戏大作在哪里下载 发布:2025-04-01 20:31:31 浏览:890
ftp文件夹550错误 发布:2025-04-01 20:29:37 浏览:578
sqlserver撤销 发布:2025-04-01 20:27:39 浏览:84
安卓平板如何设置键盘 发布:2025-04-01 20:16:14 浏览:111
怎么在ios解压文件 发布:2025-04-01 20:13:51 浏览:574