天助自助, 如果你自己都不想用功, 那再多的小助教也幫不上你 ... 再次強調, 先不要管語法啦! (真的要知道更多語法就用 TC 的 IDE 整合模式內打 Control_F1 看) 現在就請下定決心, 好好的把這 Pascal Triangle 從手動作到用程式做仔細研究! 看不懂就立刻抓小助教來問啦! pas000.c ==> pas00.c ==> pas0.c ==> pas1.c ==> pas2.c ==> pas3.c ==> pas4.c ==> pas5.c 就是先拿 pas000.c 去改, 改不出想不下去就看 pas00.c, 再弄不下去才看 pas0.c, ... 直到可以自己不看就弄出 pas5.c 1 //pas000.c --- by tsaiwn@csie.nctu.edu.tw /// pseudo code 2 //generate Pascal Triangle of order n 3 // 先用 #define 把可能會改的寫成符號常數是好習慣! 4 #define MAX_N 19 5 /// 以後若要改 array 大小則只要改上列的 19 即可 6 int x[MAX_N][MAX_N]; // 這樣寫很好 :-) 注意前面的 #define 7 /// /// // 假設陣列如上的 x[19] [19] ==> 這樣最大可做到 18 階巴斯卡三角形 8 /// 不懂如何做 Pascal Triangle 的.. 9 /// 可以到 http://wikipedia.net 打入 pascal triangle 查 10 /// 或是看我給的投影片 (bb.nctu.edu.tw 和備用網址內都有放) 11 /// ==> 要把一般正三角形的 Pascal Triangle 往左推 45 度變成直角三角形 12 /// 13 /// 1 14 /// 1 1 15 /// 1 2 1 16 /// 1 3 3 1 17 /// 1 4 6 4 1 18 /// 1 5 10 10 5 1 19 /// 這樣除了最左與最右都是 1, 中間每格都是等於 其上方那格 加 左上角那格 20 #include 21 int main( ) { // 每個程式都長這樣 22 讀入一整數 n , 可以寫成一個 function 分工合作方便日後修改 23 Loop for i from 0 to n // n 階要從第 0 列到第 n 列 24 x[i][0] =1; // 最左邊放 1 (就是第 i 列的第 0 個) 25 在 x[i] 這列的 最右邊放 1 (就是第 i 列的第 i 個) 26 // 接下來用 for Loop 處理中間各元素 27 for(j=1; j<= i-1; j++) { // 第 i 列的中間每一格都要填 28 //x[i][j]= 正上方元素 + 左上角元素 ; 29 // 如何表示 x[i][j] 的正上方? 左上角? 30 } // for(j 31 // 整列好了, 再來當然就可以用 for Loop 把整列印出來 32 // 每列印之前可以先印一些空格就可印成正三角形 33 // 用 for Loop 把 這第 i 列的 第0個到第 i 個 整列印出 34 printf("\n"); // 當然要記得印出換新列(new Line) 35 next for i /* for i 從 第0列 到 第 n 列 */ 36 // 如果你要全部填完再用兩層 for Loop 印出也可以, 但可印就印何必等到全部弄好? 37 // 這樣寫只能做一次, 若要一直做到輸入是負數怎麼做? 38 } // main