兩個數判斷大小(不能用 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 緩衝區,防止影響後面後續的數據輸入的正確性

這裏寫圖片描述

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

這裏寫圖片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章