nclude // 先用 #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;" ? } 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-1][j] + // 等於正上方 + x[i-1][j-1]; // .. 左上角 } // 再來用 for Loop 把整列印出來 // 每列印之前先印一些空格就可印成正三角形 // for(j=0; j<= (n-i)*3; ++j) printf(" "); // 印一些空格 for(j =0; j<=i; j++) { printf("%6d", x[i][j]); // 每個元素印成 6 格的整數 }; printf("\n"); // 當然要記得印出換新列(new Line) }; /* for i */ } // while printf("\nBye bye\n"); } ///////////////////////////////////////////////////////////////////// int getInteger( ) { // 簡易版的 getInteger int ans = -1; // 預設 -1 是個好習慣 scanf("%d", &ans); // 若亂打可能會使程式當掉! return ans; }