[爆卦]巢狀迴圈題目是什麼?優點缺點精華區懶人包

為什麼這篇巢狀迴圈題目鄉民發文收入到精華區:因為在巢狀迴圈題目這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者shile775 (笑看人生)站內C_and_CPP標題[問題] 巢狀迴圈時間Thu Aug 1...


最近看到一個題目:(程式碼如下)
#include <stdio.h>
#include <stdlib.h>
#define ROWS 6

int main(void)
{
int i;
char ch;

for(i = 0; i < ROWS; i++)
{
for(ch = 'F'; 'F' <= (ch+i); ch--)
printf("%c", ch);
putchar('\n');
}

system("pause");
return 0;
}

=====================================

在第二層迴圈的時候,

(帶入第二層)
假設 i = 0 --------> ch ='F';'F'<=(ch+0) 印出:F

i = 1 --------> ch ='F';'F'<=(ch+1) 印出:FG

i = 2 --------> ch ='F';'F'<=(ch+2) 印出:FGH
(以下省略)

=====================================
可是跑程式的時候卻印出:
(這個是要跑的題目)
F
FE
FED
FEDC
FEDCB
FEDCBA


我是哪裡想錯了,最近一直對迴圈和遞增遞減搞不清楚,
很謝謝大家的教導! (在麻煩各位的講解了!!)


補充:問題是在於迴圈那裡我哪裡搞錯了??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.115.134.161
firejox:你也沒講題目呀... 08/18 20:53
ericinttu:ch-- 要印出ch 08/18 20:55
※ 編輯: shile775 來自: 58.115.134.161 (08/18 20:58)
suhorng:i = 1 => ch='F';'F'<=(ch+1);ch-- 08/18 20:57
suhorng:印出了'F'.然後ch--變成'E','E'+1<='F',再印出'E'然後ch-- 08/18 20:57
suhorng:'D','F'>'D'+1='E',跳出迴圈 其他依此類推 08/18 20:58
suhorng: 樓上上反了,這裡是 'F'<='E'+1 08/18 20:58
firejox:應該是ch <= 'F'+i;ch++ ... 08/18 20:59
firejox:原PO似乎誤解了for的意思... 08/18 21:01

不過f大,題目是要亮出這樣(如下)
(這個是要跑的題目)
F
FE
FED
FEDC
FEDCB
FEDCBA

不懂的地方是下面的迴圈是怎麼跑的?
for(i = 0; i < ROWS; i++)
{
for(ch = 'F'; 'F' <= (ch+i); ch--)
※ 編輯: shile775 來自: 58.115.134.161 (08/18 21:04)
firejox:for (first initialize;true expression;next loop do) 08/18 21:04
firejox:恩 看懂了 + 只是一種運算 並不會改變ch... 08/18 21:07
firejox:你改成ch >= ('F'-i) 這樣會不會比較好懂一點... 08/18 21:11
tropical72:我想你應是不懂 ch<='F'+i 或 ch>='F'-i 要怎麼比較 08/18 21:15
tropical72:http://www.asciitable.com/ 去查 ASCII, 會發現 'F' 08/18 21:15
tropical72:就是十進位的 70, ch<='F'+i 變成 ch<=70+i,其它代換 08/18 21:16
tropical72:也一樣, 再推一下吧.. 08/18 21:16
ericinttu:ch的位置就跟F是在同一格;ch還沒有後退i格的話;就退一格 08/18 21:19
firejox:他可能認為 ch='F' ;'F' <=(ch+1) -->'F'<='G' -->從'F'到 08/18 21:20
firejox:'G' 08/18 21:21
firejox:那麼ch--是寫好玩的... = = 08/18 21:23

那我在問個白癡問題= =,ch--
是 for( 1: ch='F'; 2:'F'<=(ch+i);ch--)
1和2的哪一個??
※ 編輯: shile775 來自: 58.115.134.161 (08/18 21:29)
firejox:那麼原PO是否也是把for(i = 0; i < ROWS; i++)想成 08/18 21:26
firejox:i = 0; i < ROWS --> 0 < ROWS -->0 ~ (ROWS-1).... 08/18 21:27
※ 編輯: shile775 來自: 58.115.134.161 (08/18 21:32)
※ 編輯: shile775 來自: 58.115.134.161 (08/18 21:33)
firejox:for(...;...; ch-- ) .... 08/18 21:34

你可能也想看看

搜尋相關網站