[語法] for 的問題

看板C_and_CPP (C/C++)作者 (壓力大)時間16年前 (2009/12/05 22:22), 編輯推噓4(4010)
留言14則, 3人參與, 最新討論串1/1
感覺只是一個小小概念 可是我不清楚@@ 這是ACM100的題目 #include<stdio.h> int main() { int input1,input2,count=1,count2=0,i; while(scanf("%d %d",&input1,&input2)==2) { printf("%d %d",input1,input2); if (input1>input2) { for (i=input2;i<=input1;i++) { while(i>1) { if (i%2==0) i=i/2; else i=i*3+1; count++; } if (count>=count2) count2=count; } } else { for (i=input1;i<=input2;i++) { while(i>1) { if (i%2==0) i=i/2; else i=i*3+1; count++; } if (count>=count2) count2=count; } } printf("%d\n",count2); } } 為什麼在這段code的情況下 裡面的兩個for會變成無窮迴圈呢? 先謝謝各位了.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.137.85.136

12/05 22:22, , 1F
ps 我是debug後發現問題出在for跑不完
12/05 22:22, 1F

12/05 22:28, , 2F
在while與for都各自把i印出來看看應該就知道了吧@_@"
12/05 22:28, 2F

12/05 22:29, , 3F
你的WHILE跑完I一定會變成1 然後I++ --> 2 WHILE-->1
12/05 22:29, 3F

12/05 22:29, , 4F
for跑不完 while印不出i@@
12/05 22:29, 4F

12/05 22:29, , 5F
1 2 1 2 1 2 1 2 1 ..
12/05 22:29, 5F

12/05 22:30, , 6F
while為什麼會印不出i~_~ 事實上不看負數或overflow,
12/05 22:30, 6F

12/05 22:30, , 7F
靠 tw看出來了 @@
12/05 22:30, 7F

12/05 22:31, , 8F
我一直往語法問題去想 都忘記i一直歸成1..
12/05 22:31, 8F

12/05 22:31, , 9F
i只有等於2時才能離開while, 一離開就變1, for永遠沒機
12/05 22:31, 9F

12/05 22:31, , 10F
會結束....~_~
12/05 22:31, 10F

12/05 22:32, , 11F
tw大大腦執行的好快, 小弟我大腦剛才執行完....XD
12/05 22:32, 11F

12/05 22:33, , 12F
因為我也是新手 所以只看的出這種問題 = = "
12/05 22:33, 12F

12/05 22:34, , 13F
真的! 還是tw也寫過這題且遇過同樣問題XD 總之太感謝你了= =
12/05 22:34, 13F

12/05 22:36, , 14F
原來tw大寫過, 這就是資料有預讀進cache的優勢.(大誤XD)
12/05 22:36, 14F
文章代碼(AID): #1B6coT3M (C_and_CPP)
文章代碼(AID): #1B6coT3M (C_and_CPP)