ある条件が満たされている間、文を繰り返し実行するために、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;
}
 |