ある条件が満たされている間の繰り返しには for() が便利である。
for (最初にすること; 継続の条件; 各繰り返しの最後にすること) 文; |
括弧 { } でくくることにより、複数の文をまとめた複文が使える。
for (最初にすること; 継続の条件; 各繰り返しの最後にすること) { 文1; 文2; ... 文n; } |
よくあるパターンとして、 「n 回の繰り返し」をするために次のように書くことがある。
n回の繰り返し |
for (i = 0; i < n; i++) { 文; 文; } |
応用として、
「
に対して , を計算して表示せよ」
という問題を解いてみよう。
,
とおくと、
数列 , は
prog06.c |
/* prog06.c --- for 文による繰り返し (1) */ #include <stdio.h> int main(void) { int i, n; double x, y; printf("自然数を一つ入力してください: "); scanf("%d", &n); x = 1.0; y = 1.0; for (i = 1; i <= n; i++) { /* x をその 2 倍で、y をその 1/2 倍で置き換える */ x = 2 * x; y = y / 2; /* 次の %g を %f や %e に変えて試してみよう */ printf("2の%d乗=%g, 1/2の%d乗=%g\n", i, x, i, y); } return 0; } |
prog06 の実行結果 |
% ./prog06 自然数を一つ入力してください: 20 2の1乗=2, 1/2の1乗=0.5 2の2乗=4, 1/2の2乗=0.25 2の3乗=8, 1/2の3乗=0.125 2の4乗=16, 1/2の4乗=0.0625 2の5乗=32, 1/2の5乗=0.03125 2の6乗=64, 1/2の6乗=0.015625 2の7乗=128, 1/2の7乗=0.0078125 2の8乗=256, 1/2の8乗=0.00390625 2の9乗=512, 1/2の9乗=0.00195312 2の10乗=1024, 1/2の10乗=0.000976562 2の11乗=2048, 1/2の11乗=0.000488281 2の12乗=4096, 1/2の12乗=0.000244141 2の13乗=8192, 1/2の13乗=0.00012207 2の14乗=16384, 1/2の14乗=6.10352e-05 2の15乗=32768, 1/2の15乗=3.05176e-05 2の16乗=65536, 1/2の16乗=1.52588e-05 2の17乗=131072, 1/2の17乗=7.62939e-06 2の18乗=262144, 1/2の18乗=3.8147e-06 2の19乗=524288, 1/2の19乗=1.90735e-06 2の20乗=1.04858e+06, 1/2の20乗=9.53674e-07 % |
繰り返しの命令には、 他に while () ... や do ... while () などがある。