Re: [問題] 金字塔製作
※ 引述《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
08/05 19:08, 1F
→
08/06 00:58, , 2F
08/06 00:58, 2F
討論串 (同標題文章)