兩個數判斷大小(不能用 if, switch, ?, 和其他判斷語句)
阿新 • • 發佈:2019-01-06
求最值,考慮數學關係
程式碼如下( 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 緩衝區,防止影響後面後續的資料輸入的正確性
重點二: 巨集實現最值數學公式,提高可複用性