1. 程式人生 > >兩個數判斷大小(不能用 if, switch, ?, 和其他判斷語句)

兩個數判斷大小(不能用 if, switch, ?, 和其他判斷語句)

求最值,考慮數學關係

程式碼如下( C ):

#include <stdio.h>
#include <math.h> 

#define MAX(a,b)  (  ( (a)+(b) ) + abs( (a)-(b) )  ) /2
#define MIN(a,b)  (  ( (a)+(b) ) - abs( (a)-(b) ) ) / 2
int main(void)
{
    char c;
    int a;
    int max;    
    int min;
    int b;

    printf( "input a: " );
    scanf( "%d
"
, &a ); while( ( c =getchar() ) != '\n' ) continue ; printf( "input b: " ); scanf( "%d" , &b ); while( ( c = getchar() ) != '\n' ) continue ; printf( "a = %d \t b = %d\n", a, b ); max = MAX( a, b ); min = MIN( a, b ); printf( "max of a and b is %d
\n"
, max ); printf( "min of a and b is %d\n" , min ); return 0 ; }

結果:

這裡寫圖片描述

重點一:清楚stdin 緩衝區,防止影響後面後續的資料輸入的正確性

這裡寫圖片描述

重點二: 巨集實現最值數學公式,提高可複用性

這裡寫圖片描述