今日は1円貯金し、あすは倍の2円、その翌日はさらに倍の4円というように、前日の倍の
金額を預金していったら何日で10万円を超えることができるのかを調べる。
| <html> <head> <script language="JavaScript"> <!-- function hyozi(){ var gaku,day,total; total=0; day=1; gaku=1; //ループここから while(total<100000){ total=total+gaku; document.write(day+"日目 "+total+"円<br>"); gaku=gaku*2; day++; } //ループここまで } //--> </script> </head> <body> 今日は1円貯金し、あすは倍の2円、その翌日はさらに倍の4円というように、前日の倍の 金額を預金していったら何日で10万円を超えることができるのかを調べる。 <form name="form1"> <input type="button" value="表示" onclick="hyozi()"> </form> </body> </html> |
| 【解説】 関数「hyozi」ボタン動作用 変数1「gaku」毎日貯金する額 初期値は0 変数2「day」経過日数 初期値は1(1日目からなので) 変数3「total」預金額合計 初期値は1(1日目は1円) この問題ではwhile文を使います。while文は指定された条件に 達するまでずっとループしつづけます。 ここでは total<100000 つまり10万円に達するまでループしつづけ るようにすればいいのです。 total=total+gaku では、合計額に預金を追加しています。 gaku=gaku*2 で翌日の貯金する額を2倍にしています。 その処理が終了して、day++で次の日に移行するのです。 表示部分は貯金をした後、total=total+iの次の行にdocument.writeを 追加すれば問題なく動作すると思います。 |
| 【答え】 1日目 1円 2日目 3円 (中略) 17日目 131071円 ちなみに、document.write・・・を gaku=gaku*2に入れても同じように表示されます。しかし、 day++の次の行に入れると、1日余分にかかってしまいます。さらに、 day++の次 } の下に入れると1日余分にかかった上に1〜17日目が省かれます。 |