• ベストアンサー

基本情報 平成19年 秋 午後 問10

a,e,fとiの値がちがいまちがっていました。 eの問題ですと i=0の時 80>25で成立 i=1の時 80>60で成立 i=2の時 80>100で不成立 i=1の時 *price=Price_tbl[1]が答えになると思っています。 正解はi=2の時になっています。何故でしょうか?。forループが理解できていないでしょうか?。 forループの右端のiを増やしていくi++は*priceの値を計算した後にiを加算すると思っています。これが間違っているんでしょうか?。

質問者が選んだベストアンサー

  • ベストアンサー
  • hidebun
  • ベストアンサー率50% (92/181)
回答No.2

問題貼りましょう。 http://xn--n9q36mh1hnxuksz7wt.jp/FE19b-pm/t10.html > forループが理解できていないでしょうか? 理解できていないか、ケアレスミスですね。 for(i = 0; size > Size_tbl[i]; i++); *price = (Base_price + dist_mode * Ext_price) * Mag_tbl[i]; と、 for(i = 0; size > Size_tbl[i]; i++) {  *price = (Base_price + dist_mode * Ext_price) * Mag_tbl[i]; } の違いは、わかりますか。 for(i = 0; size > Size_tbl[i]; i++); は、iを決めるためだけの行です。

nanarunn
質問者

補足

>for(i = 0; size > Size_tbl[i]; i++); は、iを決めるためだけの行です。 i=2の時 80>100で不成立 でforループを抜けるから、i=2なのでしょうか?。

その他の回答 (2)

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.3

> i=2の時 80>100で不成立 > でforループを抜けるから、i=2なのでしょうか?。 そうです。

nanarunn
質問者

お礼

スッキリしました。forの最後のセミコロンを見逃していました。 問題載せてくれてありがとうございます。丁寧な回答、親切さに感謝します。ありがとうございました。

  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.1

くだんのforループの閉じカッコの直後に ; (セミコロン)があります。 したがって、 > forループの右端のiを増やしていくi++は*priceの値を計算した後にiを加算すると思っています。 このようにはなっていません。 *price を計算しているのは、くだんのforループの「外」です。

nanarunn
質問者

お礼

セミコロンを忘れていました。 回答ありがとうございます。

関連するQ&A