[問題] 巢狀迴圈

看板C_and_CPP作者 (笑看人生)時間14年前 (2011/08/18 20:52), 編輯推噓3(3019)
留言22則, 4人參與, 最新討論串1/2 (看更多)
最近看到一個題目:(程式碼如下) #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

08/18 20:53, , 1F
你也沒講題目呀...
08/18 20:53, 1F

08/18 20:55, , 2F
ch-- 要印出ch
08/18 20:55, 2F
※ 編輯: shile775 來自: 58.115.134.161 (08/18 20:58)

08/18 20:57, , 3F
i = 1 => ch='F';'F'<=(ch+1);ch--
08/18 20:57, 3F

08/18 20:57, , 4F
印出了'F'.然後ch--變成'E','E'+1<='F',再印出'E'然後ch--
08/18 20:57, 4F

08/18 20:58, , 5F
'D','F'>'D'+1='E',跳出迴圈 其他依此類推
08/18 20:58, 5F

08/18 20:58, , 6F
樓上上反了,這裡是 'F'<='E'+1
08/18 20:58, 6F

08/18 20:59, , 7F
應該是ch <= 'F'+i;ch++ ...
08/18 20:59, 7F

08/18 21:01, , 8F
原PO似乎誤解了for的意思...
08/18 21:01, 8F
不過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)

08/18 21:04, , 9F
for (first initialize;true expression;next loop do)
08/18 21:04, 9F

08/18 21:07, , 10F
恩 看懂了 + 只是一種運算 並不會改變ch...
08/18 21:07, 10F

08/18 21:11, , 11F
你改成ch >= ('F'-i) 這樣會不會比較好懂一點...
08/18 21:11, 11F

08/18 21:15, , 12F
我想你應是不懂 ch<='F'+i 或 ch>='F'-i 要怎麼比較
08/18 21:15, 12F

08/18 21:15, , 13F
http://www.asciitable.com/ 去查 ASCII, 會發現 'F'
08/18 21:15, 13F

08/18 21:16, , 14F
就是十進位的 70, ch<='F'+i 變成 ch<=70+i,其它代換
08/18 21:16, 14F

08/18 21:16, , 15F
也一樣, 再推一下吧..
08/18 21:16, 15F

08/18 21:19, , 16F
ch的位置就跟F是在同一格;ch還沒有後退i格的話;就退一格
08/18 21:19, 16F

08/18 21:20, , 17F
他可能認為 ch='F' ;'F' <=(ch+1) -->'F'<='G' -->從'F'到
08/18 21:20, 17F

08/18 21:21, , 18F
'G'
08/18 21:21, 18F

08/18 21:23, , 19F
那麼ch--是寫好玩的... = =
08/18 21:23, 19F
那我在問個白癡問題= =,ch-- 是 for( 1: ch='F'; 2:'F'<=(ch+i);ch--) 1和2的哪一個?? ※ 編輯: shile775 來自: 58.115.134.161 (08/18 21:29)

08/18 21:26, , 20F
那麼原PO是否也是把for(i = 0; i < ROWS; i++)想成
08/18 21:26, 20F

08/18 21:27, , 21F
i = 0; i < ROWS --> 0 < ROWS -->0 ~ (ROWS-1)....
08/18 21:27, 21F
※ 編輯: shile775 來自: 58.115.134.161 (08/18 21:32) ※ 編輯: shile775 來自: 58.115.134.161 (08/18 21:33)

08/18 21:34, , 22F
for(...;...; ch-- ) ....
08/18 21:34, 22F
文章代碼(AID): #1EJGiCza (C_and_CPP)
文章代碼(AID): #1EJGiCza (C_and_CPP)