
先簡要的講下思路: 螺旋數組因為數組的排列像一個海螺所以就被稱作螺旋數組(講點廢話,這個是我杜撰的)大體的形狀就如圖片所顯示的,那好下面我們就開始畫圈圈,每一圈可以看作四步:第一 先把上面的邊畫出來,第二 把右邊的邊畫出來, 第三 把下邊的邊畫出來 ,第四 把左邊的邊畫出來。畫玩第一個圈,接着畫里面的一個圈,第一。。。第二 。。第四。。畫完之后去里面沒有圈了。然后再畫里面的里面的圈,直到畫不動了(超出了數組的最大索引量)再停下來;嗯 思路就是這么個思路,下面是貼代碼的時候:
1 static void Main(string[] args) 2 { 3 Console.WriteLine("請輸入大於1的正整數:"); 4 int n = 0; 5 try 6 { 7 string read = Console.ReadLine(); 8 9 n = Int32.Parse(read); 10 11 if (n <= 1) 12 { 13 Console.WriteLine("請輸入正確的正整數:"); 14 } 15 } 16 catch 17 { 18 Console.WriteLine("請輸入正確的正整數:"); 19 } 20 21 22 byte[,] b = new byte[n, n]; 23 24 byte result = 1; //輸出的起始結果為1 25 26 int itemN = n - 1; //要輸出多少條線 27 28 for (int m = 0; m < n / 2f; m++) 29 { 30 if (itemN > 0) 31 { 32 //輸出頂線 33 for (int i = 0; i < itemN; i++) 34 { 35 b[m, i + m] = result; 36 result++; 37 } 38 //輸出右邊線 39 for (int i = 0; i < itemN; i++) 40 { 41 b[i + m, itemN + m] = result; 42 result++; 43 } 44 //輸出底線 45 for (int i = itemN; i > 0; i--) 46 { 47 b[itemN + m, i + m] = result; 48 result++; 49 } 50 //輸出左線 51 for (int i = itemN; i > 0; i--) 52 { 53 b[i + m, m] = result; 54 result++; 55 } 56 //減去兩條線 57 itemN -= 2; 58 } 59 else 60 { 61 b[m, m] = result; 62 } 63 } 64 65 for (int i = 0; i < n; i++) 66 { 67 Console.WriteLine(); 68 for (int j = 0; j < n; j++) 69 { 70 Console.Write(b[i, j].ToString().PadRight(10)); 71 } 72 } 73 Console.Read();
以上是看到一道面試題感覺有點意思於是研究了下。因最近在學習寫郵件,發現自己文筆與表達太差。所以就寫下此文,以鍛煉文筆。即當作練習,也當作以后鄙視現在的證據。大家如果感覺幼稚請輕噴
