今回の目的
do-while 文の理解と、break, continue 文の理解が目的です。
do-while 文とは
do-while 文は条件の評価されるタイミングが違うだけで、あとは while 文と一緒です。
while 文では、条件は一番最初に調べられ (= 評価され)、条件が成立していない場合、括弧内は実行されませんでした。
do-while 文では、条件が評価される前に、一度括弧内が実行され、その後で条件が評価されます。
例
while 文では、初めに条件が評価されます。
つまり、while 文では条件が成立していない場合、1回も処理は行われません。
int i;
i = 10;
while(i < 5){
printf("%d\n", i);
++i;
}
printf("%d\n", i);
出力
10
do-while 文では、条件は最後に評価されます。
つまり、条件が成立しているか、していないかにかかわらず、最低1回は処理が行われます。
int i;
i = 10;
do {
printf("%d\n", i);
++i;
} while(i < 5);
printf("%d\n", i);
出力
10 11
do-while 文の形式
do-while 文は次のような形式をしています。
do {
文;
} while(条件);
do-while 文では、まず初めに括弧内の文が実行したあと、条件が調べられます。
while 文との違いはそれだけです。
do-for 文はありません。
continue 文
ループを強制的に抜けるには break 文を使うことは既に知っていると思います。
今回は、似たような働きをする continue 文について扱います。
break 文は、以下の図のように強制的にループを終了させる働きをしました。
一方、continue 文は、括弧内の処理の末尾の次にジャンプします。
continue 文では、ループは終了しませんが、continue 文以降の処理が省かれることになります。
break, continue 文は、while, for, do-while 文のすべてで同じように利用できます。
ただし、switch 文では continue 文は利用できません。
例
以下は 1 から 20 まで表示するプログラムですが、3の倍数は表示されません。
# include <stdio.h>
int i;
for(i = 1; i <= 20; ++i){
if(i % 3 == 0){
continue;
}
printf("%d\n", i);
}
課題
課題1
do-while 文を用いて、ユーザーが条件 (0 < x < 10) を満たす整数 x を入力するまで、入力を求めるプログラムを作成しなさい。
また、入力が成功したら、その整数を表示しなさい。
実行例
./a.out x (0 < x < 10) を入力してください: 9 9
./a.out x (0 < x < 10) を入力してください: 0 x (0 < x < 10) を入力してください: 10 x (0 < x < 10) を入力してください: 1 1
課題2
1 から入力された整数 n まで表示するプログラムを作成しなさい。
ただし、指定された整数 a の倍数を表示してはいけない。
プログラムには continue 文を用いること。
do-while 文は用いなくてよい。
入力形式
整数 n, a をスペース区切りで入力します。
n a
実行例
./a.out 6 2 1 3 5
./a.out 10 3 1 2 4 5 7 8 10
./a.out 100 1
コメントはありません。コメント/C言語入門/繰り返し do-while?