ある条件が満たされている間、文を繰り返し実行するために、while がある。
while (条件式) 文; |
条件式を作るためには、例えば以下のような比較演算子が使える。
== (等しい) != (等しくない) < (小さい) <= (以下≦) > (大きい) >= (以上≧)
条件式が成り立っているかどうかで、次に何を実行するか、場合わけをする ために、if という命令がある。
if (条件式) 文; |
if (条件式) 文1; else 文2; |
prog08a.c |
/* * prog08a.c --- 実係数2次方程式を解く */ #include <stdio.h> #include <math.h> int main(void) { double a, b, c, D, sqrtD, re, im, x1, x2; printf("2次方程式 a x^2+b x+c=0 を解く。\n"); printf("a, b, c: "); scanf("%lf%lf%lf", &a, &b, &c); D = b * b - 4 * a * c; if (D > 0) { sqrtD = sqrt(D); x1 = (- b + sqrtD) / (2 * a); x2 = (- b - sqrtD) / (2 * a); printf("相異なる2つの実数解: %20.15g, %20.15g\n", x1, x2); } else if (D == 0.0) { printf("ただ一つの実数解(重根): %20.15g\n", - b / (2 * a)); } else { re = - b / (2 * a); im = sqrt(- D) / (2 * a); printf("相異なる2つの虚数解: %20.15g±%20.15g i\n", re, im); } return 0; } |
prog08.c |
/* prog08.c --- while による繰り返しと if 文による分岐 (場合わけ) */ /* * 与えられた自然数が偶数ならば 2 で割り、そうでなければ 3 倍して 1 を * 加えるという操作を繰り返すと、最後には必ず 1 になる、らしい * (簡単そうだが証明されていない)。 * このことを実験するプログラム。 */ #include <stdio.h> int main(void) { int n; printf(" 自然数を入力してください: "); scanf("%d", &n); while (n != 1) { printf("%d\n", n); if (n % 2 == 0) n = n / 2; else n = 3 * n + 1; } printf("%d\n", n); return 0; } |