p.148 関数の返却値を引数として関数に渡す
・関数に渡す引数として式を記述できる
例: max2(10 + 30, 40 * 2);
・また、関数の呼び出しも式の一種で、評価は返却値(戻り値)になる
例: max2(1, 2)の戻り値は2であり、この式の評価も2になる
・よって、関数の返却値を引数として関数に渡すことができる
例: printf("%d", max2(1, 2));
・自作の関数においても同様
例: max2(max2(10, 20), 30) ⇒ max(20, 30) ⇒ 30
p.148 list0603.cpp
//p.148 list0603.cpp 二つの整数の2乗値の差を求める
#include <stdio.h>
//--- nの2乗値を返す ---//
int sqr(int n)
{
return n * n;
}
//--- aとbの差を返す ---//
int diff(int a, int b)
{
return a > b ? a - b : b - a; // 大きいほうから小さいほうを引く
}
int main(void)
{
int x, y;
puts("二つの整数を入力せよ。");
printf("整数x:"); scanf("%d", &x);
printf("整数y:"); scanf("%d", &y);
printf("xの2乗とyの2乗の差は%dです。\n", diff(sqr(x), sqr(y))); //diff関数にsqr関数の戻り値を渡す
return 0;
}
p.148 演習6-3
//p.148 演習6-3 ex0603.cpp 整数の3乗値を求める
#include <stdio.h>
//--- nの3乗値を返す ---//
int cube(int n)
{
return n * n * n;
}
int main(void)
{
int x;
printf("整数:"); scanf("%d", &x);
printf("3乗は%dです。\n", cube(x));
return 0;
}
p.149 自作の関数を呼び出す関数
・基本的に関数は単機能にすると使い勝手が良い場合が多い ・そして、関数から関数を呼び出すようにすることで、記述の重複を避け、ミスの防止が可能になる ・例えば、list0603のsqrをdiffを1つの関数sqrdiffにすることも可能だが、別々にしておけば、再利用しやすい
p.149 list06004.cpp
//p.149 list06004.cpp 四つの整数の最大値を求める
#include <stdio.h>
//--- 大きいほうの値を返す(mainでは使われていない) ---//
int max2(int a, int b)
{
return a > b ? a : b;
}
//--- 四つの整数の最大値を返す ---//
int max4(int a, int b, int c, int d)
{
return max2(max2(a, b), max2(c, d)); //aとbの大きいほうと、cとdの大きい方を得て、大きい方を返す
}
int main(void)
{
int n1, n2, n3, n4;
puts("四つの整数を入力せよ。");
printf("整数n1:"); scanf("%d", &n1);
printf("整数n2:"); scanf("%d", &n2);
printf("整数n3:"); scanf("%d", &n3);
printf("整数n4:"); scanf("%d", &n4);
printf("最も大きい値は%dです。\n", max4(n1, n2, n3, n4));
return 0;
}
p.149 演習6-4 作成例
//p.149 演習6-4 ex0603.cpp 整数の4乗値を求める
#include <stdio.h>
//--- nの2乗値を返す ---//
int sqr(int n)
{
return n * n;
}
//--- nの4乗値を返す ---//
int pow4(int n)
{
return sqr(n) * sqr(n);
}
int main(void)
{
int x;
printf("整数:"); scanf("%d", &x);
printf("4乗は%dです。\n", pow4(x));
return 0;
}