看板 C_and_CPP 關於我們 聯絡資訊
最近看到一個題目:(程式碼如下) #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