求最值,考慮數學關係
代碼如下( 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 緩衝區,防止影響後面後續的數據輸入的正確性
重點二: 宏實現最值數學公式,提高可複用性