2017-08-28 88 views
-5
#include<math.h> 
#include<stdio.h> 
int main(void) 
{ 
    int i = 0; 

    int f = 10000; 

    int div1 = (powl(10,i)); 

    int temp1 = f/div1; 

    for(i = 2; temp1 > 1; i++) 
    { 
     printf("%i\n",temp1); 
    } 
} 

據我所知,div1的值應該是100,1000,10000 ...在I中有相應的增量,那麼temp1應該是100,10 ,然後循環停止(?)。但是我得到了10000 10000 10000的無限循環......我不明白這個程序出了什麼問題

有人可以解釋我做錯了什麼嗎?

+2

其不良格式+缺少'{​​' – CIsForCookies

+1

'爲(i = 2; temp1目錄> 1;我++)'你的循環狀態無關用' i'和'temp1'不會在循環中改變 –

+0

不是temp1 = f /(​​powl(10/i));所以我的功能,應該改變我? – user239321

回答

1

您的for聲明應該是這樣的。你錯過了叫那些聲明您for循環內

for(i = 2; temp1 > 1; i++) 
    { 
     div1 = (powl(10,i)); 

     temp1 = f/div1; 
     printf("%i\n",temp1); 

    } 
2

for循環檢查temp1,但temp1未在循環體中修改。嘗試將所需的修改放入循環體中或作爲for循環中的最後一個表達式;變量i可能根本就沒有必要。

+2

也許這裏有一些誤解; 'temp1 = f /(​​powl(10/i))'是一次只計算一次的表達式,對'powl'執行一次調用。它不是一種將'temp1'和'i'神奇地聯繫起來的方式,因爲每當'i'發生變化時它就會改變'temp1',你可能會根據你在評論中使用的措辭來假設它。 – Codor

相關問題