2017-08-28 6 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 10000の無限ループを得る......私はこのプログラムで何がうまくいかないのか理解できません

私は間違って何かを説明することができますか?

+2

その悪いあなたforループ内のステートメントにそれらを呼び出すために逃したフォーマットされた+行方不明 '{' – CIsForCookies

+1

'のための(I = 2; TEMP1> 1; I ++)は'あなたのループ条件は 'とは何の関係もありませんiと 'temp1'はループ内で変化しません。 –

+0

はtemp1 = f /(​​powl(10/i))ではありません。したがって、iの関数はiと一緒に変化すべきですか? – user239321

答えて

1

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'を1回呼び出すだけで一度だけ評価される式です。 temp1とiを魔法のようにリンクさせる手段ではなく、 'i'が変更される度に' temp1'が変更されるという意味で、コメントに使用されているあなたの言葉に基づいてあなたが想定していると思われるものです。 – Codor

関連する問題