布阵规律为:
a、把1放在N*N方阵中的第一行中间一列,即放在位置为(1,(N+1)/2);
b、后一个数存放的行数比前一个数存放的行数减1,若这个行数为0,则取行数为N;
c、后一个数存放的列数比前一个数存放的列数加1,若这个列数为N+1,则取列数为1;
d、如果前一个数是N的倍数,则后一个数存放的列数不变,而行数加1。
1
class magic
2
{
3
[STAThread]
4
static void Main(string[] args)
5
{
6
//奇阶魔方阵
7
int n = 7;
8
int[,] magicd = new int[n, n];
9
int x = 0, y = (n + 1) / 2 - 1;
10
for(int i = 1; i <= n * n; i++)
11
{
12
magicd[x, y] = i;
13
if(i % n == 0)
14
{
15
x++;
16
}
17
else
18
{
19
x--;
20
y++;
21
}
22
check(ref x, ref y, n);
23
}
24
for(int i = 0; i < n; i++)
25
{
26
for(int j = 0; j < n; j++)
27
{
28
Console.Write(magicd[i, j].ToString() + "\t");
29
}
30
Console.WriteLine("");
31
}
32
Console.ReadLine();
33
}
34
35
private static void check(ref int x, ref int y, int n)
36
{
37
if(x < 0)
38
{
39
x = n - 1;
40
}
41
else if(x > n - 1)
42
{
43
x = 0;
44
}
45
if(y < 0)
46
{
47
y = n - 1;
48
}
49
else if(y > n - 1)
50
{
51
y = 0;
52
}
53
}
54
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54
