次のような目標があるとします。
開始 15マイルは、24135メートル 10マイルは、16090メートル 5マイルは、8045メートル 0マイルは、0メートル 終了
このプログラムは、どのようなことを繰り返しているのでしょうか?
それは、15マイルをメートルに換算して表示し、次に15マイルを5減らして、再び計算しています。
この様な場合、まず次のように1、2回の処理だけをプログラミングして、実行を確認します。
#include <stdio.h> main() { int mc = 1609; /* マイルをメートルに換算するため定数記憶用 */ int mile = 15; /* 変換対象のマイルデータ記憶用 */ printf("開始\n"); printf("%dマイルは、", mile); printf("%dメートル\n", mile * mc); mile = mile - 5; printf("%dマイルは、", mile); printf("%dメートル\n", mile * mc); printf("終了\n"); }
正しく動いたら、太字部分を do { と }while(条件);で囲んで、 不要な処理を削除するように作るとよいでよう。
今回の条件は、前回の判定と逆になり、 >= の関係演算子を使っています。
『mile が、0以上か?』と判定し、合っていれば、 do { の先頭に戻って、繰り返しています。
mileが減って、-5まで減った段階で、whileの条件が合わなくなり、
次のprintfへ進んで終了の表示を行っています。つまり、繰り返しを終了した時のmile記憶内容は、
-5になっています。
なお、>= に似ていまが、>の関係演算子を使うと、
『mile が、0より大きいか?』という判定になります。
0マイルの計算表示をしないように修正してみましょう。
←目標が得られるように修正してからクリックください。
(分からない場合もクリックください)
←わからない場合は、クリックして覚え、再びチャレンジしましょう。