break文
switch文のところでbreakというのが何回も登場しました。
switch文での意味は「switch文から抜け出す」という意味でしたね。
breakはswitch文以外にもfor文やwhile文のループの中でも使うことが出来ます。
この時もbreakは「for文やwhile文のループから抜け出す」という意味を持っています。
break文を使って抜けられるのはループひとつだけです。ですから、二重、三重のループを抜けるには、その度にbreak文を使うようになります。
continue文
continueはfor文やwhile文などのループ処理をスキップさせるに用います。
breakとは違い、continueはスキップした後は、ループの先頭に戻ります。
#include <stdio.h>
int main(void)
{
int i = 1, n, sum;
sum = 0;
while (i <= 5) {
printf("正の整数を入力 : ");
scanf("%d", &n);
if (n < 0)
continue;
sum = sum + n;
i++;
}
printf("sum = %d\n", sum);
return 0;
}
無限ループ
while(1)とすると、基本的に処理は無限に繰り返されます。これは、条件式が偽の場合は、0、真の場合はそれ以外の値をとることを利用した方法で、無限に繰り返されます。 ただ、こういった無限ループでも、break(ブレイク)があると、ループから出ることができます。
電卓のプログラムで無限ループで、繰り返し計算を行います。
#include <stdio.h>
main()
{
double a, b, ans;
char op;
printf( "加減乗除(+,-,*,/)ができます。指定例:2+5、終了時はq\n" );
while( 1 ) {
printf( "ready : " );
if( scanf( "%lf %c %lf", &a, &op, &b ) != 3 ) break;
switch( op ) {
case '+': ans = a + b; break;
case '-': ans = a - b; break;
case '*': ans = a * b; break;
case '/': if( b == 0.0 ) {
printf( "Error!(ゼロでの割算はできません)\n" );
continue;
}
ans = a / b; break;
default: printf( "Error!(演算記号の指定が誤りです)\n" );
continue;
}
printf( "--> %g\n", ans );
}
printf( ".... Power OFF\n" );
}
多重ループ
九九の計算結果を表示するプログラム
#include <stdio.h>
int main(void)
{
int i, j;
for (i = 1; i <= 9; i++) {
for (j = 1; j <= 9; j++) {
printf(" %2d", i * j);
}
printf("\n");
}
return 0;
}
forループの2重ループを使っています。
最初のループでiが1の時はその下のforループで、
jが1から9まで増加させながら、その1の値と掛け合わせた結果を表示しています。
つまり九九の計算結果となるわけです。
二つ目のforループが終わると、printfで改行コードを出力してるので、
ちょうど9個結果を横に表示した後に次のループに入ることになり、
綺麗に九九の表が表示されるというわけです。
計算結果の間にスペースがあるのは一つ目のprintfで%2dの前にスペースが入っているからです。
ミニテスト
http://lmspress.net/courses/c-programming-i/
演習(p101)
- 演習4-24 (A, B クラス)
— List(4-18)、List(4-19)p99 を参考してください。 演習4-25 (C, D クラス)