三値の中央値を求める以下の関数を作成せよ。 int med3 (int a , int b , int c ); |
/* 演習1-2 三つの整数値の中央値を求める(すべての大小関係に対して確認) */ #include <stdio.h> /*--- a, b, cの中央値を求める ---*/ int med3(int a, int b, int c) { if (a > b) return (a <= c ? a : b > c ? b : c); else return (b <= c ? b : a > c ? a : c); } int main(void) { printf("med3(%d,%d,%d) = %d\n", 3, 2, 1, med3(3, 2, 1)); /* a>b>c */ printf("med3(%d,%d,%d) = %d\n", 3, 2, 2, med3(3, 2, 2)); /* a>b=c */ printf("med3(%d,%d,%d) = %d\n", 3, 1, 2, med3(3, 1, 2)); /* a>c>b */ printf("med3(%d,%d,%d) = %d\n", 3, 2, 3, med3(3, 2, 3)); /* a=c>b */ printf("med3(%d,%d,%d) = %d\n", 2, 1, 3, med3(2, 1, 3)); /* c>a>b */ printf("med3(%d,%d,%d) = %d\n", 3, 3, 2, med3(3, 3, 2)); /* a=b>c */ printf("med3(%d,%d,%d) = %d\n", 3, 3, 3, med3(3, 3, 3)); /* a=b=c */ printf("med3(%d,%d,%d) = %d\n", 2, 2, 3, med3(2, 2, 3)); /* c>a=b */ printf("med3(%d,%d,%d) = %d\n", 2, 3, 1, med3(2, 3, 1)); /* b>a>c */ printf("med3(%d,%d,%d) = %d\n", 2, 3, 2, med3(2, 3, 2)); /* b>a=c */ printf("med3(%d,%d,%d) = %d\n", 1, 3, 2, med3(1, 3, 2)); /* b>c>a */ printf("med3(%d,%d,%d) = %d\n", 2, 3, 3, med3(2, 3, 3)); /* b=c>a */ printf("med3(%d,%d,%d) = %d\n", 1, 2, 3, med3(1, 2, 3)); /* c>b>a */ return (0); }