1.7 関数, 1.8 引数, 演習1-15 K&R プログラミング言語C

1.7 関数

演習1-15

#include <stdio.h>

#define LOWER_TEMP 0
#define UPPER_TEMP 300
#define STEP_TEMP 20

float fahr2celsius(float fahr);
float celsius2fahr(float celsius);

int main(int argc, char *argv[])
{
    float fahr, celsius;

    fahr = LOWER_TEMP;
    printf("fahr\tcelsius\n");
    while (fahr <= UPPER_TEMP) {
        printf("%3.0f %6.1f\n", fahr, fahr2celsius(fahr));
        fahr = fahr + STEP_TEMP;
    }

    celsius = LOWER_TEMP;
    printf("celsius\tfahr\n");
    while (celsius <= UPPER_TEMP) {
        printf("%3.0f %6.1f\n", celsius, celsius2fahr(celsius));
        celsius = celsius + STEP_TEMP;
    }

    return 0;
}

float fahr2celsius(float fahr)
{
    return (5.0 / 9.0) * (fahr - 32.0);
}

float celsius2fahr(float celsius)
{
    return (9.0 / 5.0) * celsius + 32.0;
}

実行結果

$ ./ex1-15
fahr    celsius
  0  -17.8
 20   -6.7
 40    4.4
 60   15.6
 80   26.7
100   37.8
120   48.9
140   60.0
160   71.1
180   82.2
200   93.3
220  104.4
240  115.6
260  126.7
280  137.8
300  148.9
celsius fahr
  0   32.0
 20   68.0
 40  104.0
 60  140.0
 80  176.0
100  212.0
120  248.0
140  284.0
160  320.0
180  356.0
200  392.0
220  428.0
240  464.0
260  500.0
280  536.0
300  572.0
$

1.8 引数 – 値による呼出し (call by value)

関数の引数に渡した呼び出し元の変数を変更する場合はポインタで渡す。
配列の場合は、配列名で渡すと、実際に関数に渡される値は配列を指すポインタが渡される。

プログラミング言語C 第2版 ANSI規格準拠
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
«
»