當前位置:首頁 » 編程軟體 » 魔方旋轉編程

魔方旋轉編程

發布時間: 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]

熱點內容
u盤文件夾隱藏了 發布:2025-04-01 20:46:44 瀏覽:514
鐵的解壓筆 發布:2025-04-01 20:38:01 瀏覽:863
組培實驗室需要配置哪些儀器設備 發布:2025-04-01 20:33:04 瀏覽:378
安卓手機游戲大作在哪裡下載 發布:2025-04-01 20:31:31 瀏覽:889
ftp文件夾550錯誤 發布:2025-04-01 20:29:37 瀏覽:577
sqlserver撤銷 發布:2025-04-01 20:27:39 瀏覽:83
安卓平板如何設置鍵盤 發布:2025-04-01 20:16:14 瀏覽:110
怎麼在ios解壓文件 發布:2025-04-01 20:13:51 瀏覽:574
sqlwherein多條件 發布:2025-04-01 20:08:26 瀏覽:858
管理員文件怎麼刪除文件夾許可權刪除文件夾 發布:2025-04-01 19:51:43 瀏覽:141