do 〜 whileの繰り返し (減らす繰り返し)

次のような目標があるとします。

開始
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マイルの計算表示をしないように修正してみましょう。

←目標が得られるように修正してからクリックください。  (分からない場合もクリックください)
わからない場合は、クリックして覚え、再びチャレンジしましょう。