作者lO (壓力大)
看板C_and_CPP
標題[語法] for 的問題
時間Sat Dec 5 22:22:18 2009
感覺只是一個小小概念
可是我不清楚@@
這是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
1F:→ lO:ps 我是debug後發現問題出在for跑不完 12/05 22:22
2F:推 VictorTom:在while與for都各自把i印出來看看應該就知道了吧@_@" 12/05 22:28
3F:推 tw00088437:你的WHILE跑完I一定會變成1 然後I++ --> 2 WHILE-->1 12/05 22:29
4F:→ lO:for跑不完 while印不出i@@ 12/05 22:29
5F:→ tw00088437:1 2 1 2 1 2 1 2 1 .. 12/05 22:29
6F:推 VictorTom:while為什麼會印不出i~_~ 事實上不看負數或overflow, 12/05 22:30
7F:→ lO:靠 tw看出來了 @@ 12/05 22:30
8F:→ lO:我一直往語法問題去想 都忘記i一直歸成1.. 12/05 22:31
9F:→ VictorTom:i只有等於2時才能離開while, 一離開就變1, for永遠沒機 12/05 22:31
10F:→ VictorTom:會結束....~_~ 12/05 22:31
11F:→ VictorTom:tw大大腦執行的好快, 小弟我大腦剛才執行完....XD 12/05 22:32
12F:推 tw00088437:因為我也是新手 所以只看的出這種問題 = = " 12/05 22:33
13F:→ lO:真的! 還是tw也寫過這題且遇過同樣問題XD 總之太感謝你了= = 12/05 22:34
14F:→ VictorTom:原來tw大寫過, 這就是資料有預讀進cache的優勢.(大誤XD) 12/05 22:36