數字魔方c語言,c++魔方

本文目錄一覽:

用C語言如何編程打印出由1到n^2的自然數構成的魔方陣,?

奇數魔方陣就是將數字排列在nxn(n為奇數)的方陣上,要求滿足各行、各列與各對角線的和相同。如下圖所示,是n=5的奇數魔方陣。

填魔方陣的方法以奇數魔方陣最為簡單,第一個數字放在第一行的正中央(填了1),然後向右(左)上填,如果右(左)上已有數字,則向下填,如下圖所示:

一般程序語言的陣列多由0開始,為了計算方便,我們利用索引1到n的部份,而在計算是向右(左)上或向下時,我們可以將索引值除以n值,如果得到餘數為1就向下,否則就往右(左)上。

4N 魔方陣

與奇數魔術方陣相同,在於求各行、各列與各對角線的和相等,不同的是這次方陣的維度是4的倍數。

先來看看4X4方陣的解法:

簡單的說,就是一個從左上由1依序開始填,但遇對角線不填,另一個由左上由16開始填,但只填在對角線,再將兩個合起來就是解答了。如果N大於等於2,則以 4X4為單位畫對角線,如下所示:

至於對角線的位置該如何判斷,有兩個公式,有興趣的可以畫圖印證,如下:

左上至右下:j % 4 == i % 4

右上至左下:(j % 4 + i % 4) == 1

8階魔方陣(N=2)的結果如下:

C語言做的魔方陣

下面是一個打印奇數階魔方陣的程序:

#includestdio.h

int main()

{int n=0,i,j,k=1,p,q,a[20][20]={0};

while(!(n%2))

{printf(“請輸入一個小於20的奇數:”);

scanf(“%d”,n);

}

i=0;

j=n/2;

for(p=0;pn;p++)

{for(q=0;qn;q++)

{if(q0)

{i=(i+n-1)%n;

j=(j+1)%n;

}

a[i][j]=k++;

}

i=(i+1)%n;

}

for(i=0;in;i++)

{for(j=0;jn;j++)

printf(“%4d”,a[i][j]);

printf(“\n”);

}

return 0;

}

C語言編程,輸出魔方陣

程序代碼:

#includelt;stdio.hgt;

#define N 16

int main()

{

int a[N][N]={0},i,j,k,p,n;

p=1;

while(p==1)

{

printf(“Enter n(1~%d):”,N);

scanf(“%d”,n);

if((n!=0)(nlt;N)(n%2!=0))

p=0;

}

i=n+1;

j=n/2+1;

a[1][j]=1;

for(k=2;klt;=n*n;k++)

{

i=i-1;

j=j+1;

if((ilt;1)(jgt;n))

{

i=i+2;

j=j-1;

}

else

{

if(ilt;1)i=n;

if(jgt;n)j=1;

}

if(alt;igt;[j]==0)alt;igt;[j]=k;

else

{

i=i+2;

j=j-1;

alt;igt;[j]=k;

}

}

for(i=1;ilt;=n;i++)

{

for(j=1;jlt;=n;j++)

printf(“%4d”,alt;igt;[j]);

printf(“\n”);

}

return 0;

}

擴展資料:

1.第一行中間一列的值為1。

所以用j=n/2+1確定1的列數,得出a[1][j]=1。

2.每一個數存放的行比前一個數的行數減1,列數加1。

行數用i=i-1確定,列數用j=j+1確定。

3.如果一個數行數為第一行,則下一個數行數為最後一行。

4.如果一個列行數為最後一列,則下一個數列數為第一列。

5.如果按上面的規則確定的位置上已有數,或上一個數是第一行最後一列,則把下一個數放在上一個數的下面。

c語言魔方陣

所謂的魔方距陣就是一種特殊的奇數階方陣:它的行,列,對角線,上的數字之和都要相等,且方陣中的每一個數字都不相等,且數字的範圍都在1到n*n之間.

我編的程序如下:

#includestdio.h

#define N 15

main()

{

int i,j,row,cloum,size,square[N][N],count;

clrscr();

printf(“please enter the square size(odd =15):\n”);

scanf(“%d”,size);

while(size%2==0||size15||size3)

{

printf(“error due to the wrng input!please input it again!\n”);

scanf(“%d”,size);

}

for(i=0;isize;i++)

for(j=0;jsize;j++)

square[i][j]=0;

i=0;j=(size-1)/2;

square[i][j]=1;

for(count=2;count=size*size;count++)

{

row=i-10?(size-1):(i-1);

cloum=j-10?(size-1):(j-1);

if(square[row][cloum])

i=(++i)%size;

else

{i=row;

j=j-10?(size-1):(j-1);

}

square[i][j]=count;

}

printf(“the %d square is:\n”,size);

for(i=0;isize;i++)

{

for(j=0;jsize;j++)

printf(“%d”,square[i][j]);

printf(“\n”);

}

}

只能求奇數的魔方陣

#define N 20

main()

{

int a[N][N];

int n,i,j,r;

scanf(“%d”,n);

for(i=0;iN;i++) for(j=0;jN;j++) a[i][j]=0;

i=0;

j=n/2;

a[i][j]=1;

for (r=2;r=n*n;r++)

if (a[(i+n-1)%n][(j+1)%n]==0)

{i=(i+n-1)%n;j=(j+1)%n;a[i][j]=r;}

else

{i=(i+1)%n;a[i][j]=r;}

for(i=0;in;i++)

{

for(j=0;jn;j++) printf(“%4d”,a[i][j]);

printf(“\n”);

}

}

求c語言輸出所有三階魔方陣的方法,

下面是n階奇數魔方陣的程序,輸入的數字是幾,就輸出幾階魔方陣:

# include stdio.h

void main(){

int array[16][16];

int i, j, k, m, n;

/* 變量初始化 */

m = 1;

while(m == 1)

{

printf(“請輸入n(0n=15),n是奇數)\n”);

scanf(“%d”, n);

/* 判斷n是否是大於0小於等於15的奇數 */

if((n!=0) (n=15) (n%2!=0))

{

printf(“矩陣階數是 %d\n”, n);

m = 0;

}

}

/* 數組賦初值為0 */

for(i=1; i=n; i++)

for(j=1; j=n; j++)

array[i][j] = 0;

/* 建立魔方陣 */j = n/2 + 1;

array[1][j] = 1;

for(k=2; k=n*n; k++)

{

i = i – 1;

j = j + 1;

if((i1) (jn))

{

i = i + 2;

j = j – 1;

}

else

{

if(i 1)

i = n;

if(j n)

j = 1;

}

if(array[i][j] == 0)

array[i][j] = k;

else

{

i = i + 2;

j = j – 1;

array[i][j] = k;

}

}

/* 輸出魔方陣 */for(i=1; i=n; i++)

{

for(j=1; j=n; j++)

printf(“%5d”, array[i][j]);

printf(“\n”);

}

}

原創文章,作者:CWER,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/149138.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
CWER的頭像CWER
上一篇 2024-11-04 17:51
下一篇 2024-11-04 17:51

相關推薦

  • Python循環符合要求數字求和

    這篇文章將詳細介紹如何通過Python循環符合要求數字求和。如果你想用Python求和但又不想手動輸入數字,那麼本文將是一個不錯的選擇。 一、使用while循環實現求和 sum =…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python基本數字類型

    本文將介紹Python中基本數字類型,包括整型、布爾型、浮點型、複數型,並提供相應的代碼示例以便讀者更好的理解。 一、整型 整型即整數類型,Python中的整型沒有大小限制,所以可…

    編程 2025-04-29
  • Python打印數字三角形

    本文將詳細闡述如何使用Python打印數字三角形,包括從基本代碼實現到進階操作的應用。通過本文的學習,您可以掌握Python的基礎語法,同時加深對Python循環和函數的理解,提高…

    編程 2025-04-29
  • Python數字求和怎麼寫

    在Python中實現數字求和非常簡單,下面將從多個方面對Python數字求和的實現方法做詳細的闡述。 一、直接使用“+”符號進行求和 a = 10 b = 20 c = a + b…

    編程 2025-04-29
  • Python提取連續數字

    本文將介紹如何使用Python提取一個字符串中的連續數字。 一、使用正則表達式提取 正則表達式是一種可以匹配文本片段的模式。Python內置了re模塊,可以使用正則表達式進行字符串…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29

發表回復

登錄後才能評論