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

魔方旋轉編程

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

熱點內容
吉利帝豪舒適版都有哪些配置 發布:2025-09-23 23:18:57 瀏覽:301
pythonsystemexit 發布:2025-09-23 23:07:33 瀏覽:225
安卓手機在哪個平台買好 發布:2025-09-23 23:02:15 瀏覽:866
酷狗音樂掛機腳本多少錢 發布:2025-09-23 22:56:28 瀏覽:266
倚天腳本 發布:2025-09-23 22:13:35 瀏覽:12
超級訪問賈乃亮李小璐 發布:2025-09-23 22:11:24 瀏覽:812
編程拍攝 發布:2025-09-23 21:54:18 瀏覽:952
安卓怎麼橫屏發信息 發布:2025-09-23 21:52:49 瀏覽:202
歐幾里德演算法c語言 發布:2025-09-23 21:37:55 瀏覽:807
ssl證書https加密 發布:2025-09-23 21:37:02 瀏覽:273