看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
firejox:變成單層迴圈太簡單了 我也可以用0 loop,0 goto XD 08/05 19:08
xatier:只要用 longjmp (誤 08/06 00:58