//pas1.c --- by tsaiwn@csie.nctu.edu.tw //generate Pascal Triangle of order n #include // 先用 #define 把可能會改的寫成符號常數是好習慣! #define MAX_N 19 /// 以後若要改 array 大小則只要改上列的 19 即可 int x[MAX_N][MAX_N]; // 這樣寫很好 :-) int getInteger( ); // 宣告會有個幫忙讀取整數的小弟(function) int main( ) { // 每個程式都長這樣 int i, j, k, n; // 給我安排一些整數備用 while(38==38) { // in C++: while(true) { printf("n=? "); // prompt the user n = getInteger( ); // 叫小弟(function) 去讀入一整數 if(n < 0 ) break; // 注意 n < 0 表示不玩了 :-) if(n >= MAX_N) { // n 太大我們無法處理 :-( printf("Too Large! must less than %d\n", MAX_N); break; // what if changed to "continue;" ? } // n 階要從第 0 列到第 n 列 for(i=0; i <= n; i++) { /*記得宣告/定義x陣列喔*/ x[i][0]=1; // 最左邊放 1 x[i][i] =1; // 最右邊放 1 // 接下來用 for Loop 處理中間各元素 for(j=1; j<= i-1; j++) { //x[i][j]= 正上方元素 + 左上角元素 ; // 如何表示 x[i][j] 的正上方? 左上角? } // 整列好了, 再來當然就用 for Loop 把整列印出來 // 每列印之前可以先印一些空格就可印成正三角形 // 用 for Loop 把 第0個到第 i 個整列印出 for(j =0; j<= i; j++) { printf("%6d", x[i][j]); // 每個元素印成 6 格的整數 }; printf("\n"); // 當然要記得印出換新列(new Line) }; /* for i */ } // while printf("\nBye bye\n"); } //////////////////////////////////////////////////////////////////////////////////////////// /// /// // 必要時可以把以下小弟 (function) 改得好一點:-) int getInteger( ) { // 簡易版的 getInteger int ans = -1; // 預設 -1 是個好習慣 scanf("%d", &ans); // 若亂打可能會使程式當掉! return ans; }