1. continue文の基本
continue文は、ループの途中で最初に戻ってやり直すときに使うジャンプ文です。
- for、while、do~while のループの中で処理をスキップさせるために用いる。
- 通常 if文と併用され、ループ処理の中で、ある条件が成立する場合、それ以下の処理を行わずにスキップする。
// 正の整数値を5回を加算する例
#include <stdio.h>
int main(void)
{
int n, sum = 0;
int i = 1;
while (i <= 5) { // とりあえず 5回ループ
scanf("%d", &n);
if (n < 0) // 入力データが負なら
continue; // 以下の処理をスキップする
sum += n;
i++;
}
printf("sum = %d\n", sum);
return 0;
}
【実行結果例】
1
2
-1 ← スキップされ加算されない
3
4
5
sum = 15
※ 水色文字はキーボードからの入力
2. continue文をwhile文とfor文の中で使った場合の違い
実はcontinue文をwhile文の中で用いた場合とfor文の中で用いた場合とでは、スキップの動きが異なります。
下の例に見られるように、while文ではcontinueで「i++;」が実行されないため、負数を入れる限り処理がスキップされます。
しかし、for文ではcontinueでも「i++;」が実行されるため、スキップは5回のみになります。
while文で用いたcontinue文
#include <stdio.h>
int main(void)
{
int n, sum = 0;
int i = 1;
while (i <= 5) {
scanf("%d", &n);
if (n < 0)
continue;
sum += n;
i++;
}
printf("sum = %d\n", sum);
return 0;
}
【実行結果例】
-1
-1
-1
-1
-1
-1
:
※ 水色文字はキーボードからの入力
※ 何度-1を入力してもスキップするため終了しない
for文で用いたcontinue文
#include <stdio.h>
int main(void)
{
int n, sum = 0;
for (int i = 1; i <= 5; i++) {
scanf("%d", &n);
if (n < 0)
continue;
sum += n;
}
printf("sum = %d\n", sum);
return 0;
}
【実行結果例】
-1
-1
-1
-1
-1
sum = 0
※ 水色文字はキーボードからの入力
※ i++; が実行されスキップは5回のみ
【フローチャート】

【フローチャート】

〇 演習問題
まず、割られる数を 100.0 としなさい。
そして、0.0 以外の浮動小数点数を入力し、割られる数を割りなさい。
この浮動小数点数入力、除算の処理を 10回連続して行いなさい。
ただし、除算の結果が 1.0 未満になったらこの処理を終了しなさい。

【実行結果例】
浮動小数点数を入力 5
data1 = 20.000000
浮動小数点数を入力 5
data1 = 4.000000
浮動小数点数を入力 5
data1 = 0.800000
※ 水色文字はキーボードからの入力
解答例
#include <stdio.h>
int main(void)
{
double data1 = 100.0, data2;
int i = 1;
while (i <= 10) {
printf("浮動小数点数を入力 ");
scanf("%lf", &data2);
if (data2 == 0.0)
continue;
data1 = data1 / data2;
printf("data1 = %f\n", data1);
if (data1 < 1.0)
break;
i++;
}
return 0;
}
コメント