C語言——打印魔方陣(每一行,每一列,對角線之和相等)


《一》魔方陣說明:

        魔方陣是一個N*N的矩陣;

        該矩陣每一行,每一列,對角線之和都相等;

 

《二》魔方陣示例:

        三階魔方陣:

                8   1   6

                3   5   7

                4   9   2

 

        每一行之和:8+1+6=15;

                         3+5+7=15;

                         4+9+2=15;

        每一列之和:8+3+4=15;

                         1+5+9=15;

                         6+7+2=15;

        對角線之和:8+5+2=15;

                         6+5+4=15;

 

《三》魔方陣計算規律(行,列以1開始):

 

       1.將“1”放在第一行,中間一列;

       2.從2開始至N*N各數按如下規律:

              每一個數存放的行比上一個數的行減1;

              每一個數存放的列比上一個數的列加1;

       3.當一個數行為1,下一個數行為N;

       4.當一個數列數為N,下一個數列數為1,行數減1;

       5.若按上述規則確定的位置有數字,或上一個數位第1行第N列,

          下一個數字位置為上一個數的正下方(即行數減1,列數不變);

 

《四》源代碼:

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <math.h>
 5 
 6 #define N 5
 7 
 8 int main()
 9 {
10     int a[N][N] = {0};
11     int count = 1;
12     int row = 0, cul = N / 2;
13     while (count <= N*N)
14     {
15         a[row][cul] = count;
16         int i = row;
17         int j = cul;
18         if (i == 0)
19         {
20             i = N - 1;
21         }
22         else
23         {
24             i = i - 1;
25         }
26         j = (j + 1) % N;
27         if (a[i][j]!=0||(row==0&&cul==N-1))
28         {
29             i = row + 1;
30             j = cul;
31         }
32         row = i;
33         cul = j;
34         count++;
35     }
36 
37     for (int i = 0; i < N; i++)
38     {
39         for (int j = 0; j < N; j++)
40         {
41             printf("%3d",a[i][j]);
42         }
43         printf("\n");
44     }
45 
46     system("pause");
47 }
View Code

 

 

 

 

 

 

         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM