Re: [問題] 金字塔製作

看板C_and_CPP作者 (中大王)時間13年前 (2011/08/04 22:20), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串5/6 (看更多)
※ 引述《shile775 (笑看人生)》之銘言: : printf("金字塔形共幾列:"); : scanf("%d", &no); : for(i = 1; i <=no; i+=2){ : for (j = 1; j <= no-i; j+=2) : putchar(' '); : for (j = 1; j <= i; j++) : putchar('*'); : putchar('\n'); : } : (附帶一個問題,為什麼題目輸入3就可以跑出三行,而我必須輸入5?) 你可以試著這樣寫程式 先寫出兩個function,一個印出*,一個印出空白 void print_star(int num) { for (i = 0; i < num; i++) putchar('*'); } 然後照你本來的寫法 for (i = 1; i <= no; i += 2) { print_space(no-i); print_star(i) putchar('\n'); } 這樣變成偽裝的單層迴圈,這樣你應該很容易看到問題 只要把心力集中在一層迴圈,本來的兩層很容易讓初學者迷失掉 當 no = 5 時,i = 1, 3, 5 只有跑三次 解決方法可以這樣,no是使用者輸入的值,現在是3 height = (no * 2) - 1; for (i = 1; i <= height; i += 2) .... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.213.252

08/05 19:08, , 1F
變成單層迴圈太簡單了 我也可以用0 loop,0 goto XD
08/05 19:08, 1F

08/06 00:58, , 2F
只要用 longjmp (誤
08/06 00:58, 2F
文章代碼(AID): #1EEgh8d5 (C_and_CPP)
文章代碼(AID): #1EEgh8d5 (C_and_CPP)