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