※ 引述《shile775 (笑看人生)》之銘言:
: 這次是金字塔製作,
: 下面是題目:
: ======================
: 金字塔形共幾列:3
: *
: ***
: *****
: ======================
: 然後這是我想的程式:
: printf("金字塔形共幾列:");
: scanf("%d", &no);
: for(i = 1; i <=no; i+=2){
: for (j = 1; j <= no-i; j+=2)
: putchar(' ');
這我會這樣想:
1. 輸入層數及階距(假設1),印出
*
**
***
for (i=0; i<n; i++) {
for (j=0; j<=i*s; j++) {
putchar('*');
}
putchar('\n');
}
可以把 n, s 設為不同的數字看看效果.
#
2. 將 1. 程式上下翻過來,印出
**
*
需注意是想要印金字塔左上方補白部份.
for (i=0; i<n; i++) {
for (j=i*s+1; j<=(n-1)*s; j++) {
putchar('*');
}
putchar('\n');
}
#
原問題問輸入層數輸出金字塔
*
***
*****
左上角空白帶換成 '?' 就是要產生
??
?
將金字塔左上角空白去掉,是
*
***
*****
可以將上述程式 2. 和 1. 合寫在一起. 二段程式大同小異,
將格式對應的部份抄在一起,並將階距整合一下:
for (i=0; i<n; i++) {
int j;
for (j=i*s+1; j<=(n-1)*s; j++) {
putchar(' ');
}
for (j=0; j<=i*s*2; j++) {
putchar('*');
}
putchar('\n');
}
可以換不同的 n, s 值看看效果.
--
/yau
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.226.83
※ 編輯: yauhh 來自: 59.112.226.83 (08/07 03:08)
討論串 (同標題文章)