天都亮了 .. 還有人在問怎沒教語法? 啥啦? 這是演習課ㄟ .. ㄟ .. 就跟你說過 .. 語法要用 TC 整合模式打 Control_F1 自己看啦! 看不懂就要找小助教過來問 .. 問 .. 問 ! 學程式的捷徑就是多看例子, 看懂它 ==> 試著改它 ==> 研究結果 ! 這是第 00 版 Pascal Triangle 的接近完成的 示意碼 ( pseudocode) 1 //pas00.c --- by tsaiwn@csie.nctu.edu.tw 2 //generate Pascal Triangle of order n 3 /// 不懂如何做 Pascal Triangle 的可以到 http://wikipedia.net 查 4 /// 或是看我給的投影片 (bb.nctu.edu.tw 和備用網址內都有放) 5 #include 6 // 先用 #define 把可能會改的寫成符號常數是好習慣! 7 #define MAX_N 19 8 /// 以後若要改 array 大小則只要改上列的 19 即可 9 int x[MAX_N][MAX_N]; // 這樣寫很好 :-) 10 int getInteger( ); // 宣告會有個幫忙讀取整數的小弟(function) 11 // 該 function 它會傳回一個整數, 我們不用傳任何參數給它! 12 int main( ) { // 每個程式都長這樣 13 int i, j, k, n; // 給我安排一些整數備用 14 while(38==38) { // in C++: while(true) { 15 printf("n=? "); // prompt the user 16 n = getInteger( ); // 叫小弟(function) 去讀入一整數 17 if(n < 0 ) break; // 注意 n < 0 表示不玩了 :-) 離開 while Loop 18 // 最好也 check n 是否太大 19 // n 階要從第 0 列到第 n 列 20 for(i=0; i <= n; i++) { /*記得 宣告/定義 x陣列 喔*/ 21 x[i][0] =1; // 最左邊放 1 (就是第 i 列的第 0 個) 22 // 最右邊放 1 (就是第 i 列的第 i 個) 23 // 接下來用 for Loop 處理中間各元素 24 for(j=1; j<= i-1; j++) { // 第 i 列的中間每一格都要填 25 //x[i][j]= 正上方元素 + 左上角元素 ; 26 // 如何表示 x[i][j] 的正上方? 左上角? 27 } // for(j 28 // 整列好了, 再來當然就可以用 for Loop 把整列印出來 29 // 每列印之前可以先印一些空格就可印成正三角形 30 // 用 for Loop 把 第0個到第 i 個整列印出 31 for(j =0; j<= i; j++) { // Loop 的控制變數 j 用過可重複使用 32 printf("%6d", x[i][j]); // 每個元素印成 6 格的整數 33 }; 34 printf("\n"); // 當然要記得印出換新列(new Line) 35 }; /* for i 從 第0列 到 第 n 列 */ 36 // 如果你要全部填完再用兩層 for Loop 印出也可以 37 } // while 38 printf("\nBye bye.\n"); 39 return 0; // 傳回給系統 0 表示正常結束 40 } // main 41 //////////////////////////////////////////////////////////////////////////////////////////// 42 /// /// // 必要時可以把以下小弟 (function) 改得好一點:-) 43 int getInteger( ) { // 簡易版的 getInteger 44 int ans = -1; // 預設 -1 是個好習慣 45 scanf("%d", &ans); // 若亂打可能會使程式當掉! 46 return ans; 47 }