题目描述
分别用函数和带参的宏,从三个数中找出最大的数。
输入
3个实数
输出
最大的数,输出两遍,先用函数,再用宏。保留3位小数。
样例输入
1 2 3
样例输出
3.000 3.000 #include<stdio.h> #define max(a,b,c) (a>b?a:b)>(b>c?b:c)?(a>b?a:b):(b>c?b:c) //注意宏定义后面没有分号 float fun(float a,float b,float c) { float max=0; if(a>b) max=a; else max=b; if(a>c) //等同于max=(a>b?a:b)>(b>c?b:c)?(a>b?a:b):(b>c?b:c); max=a; else max=c; if(b>c) max=b; else max=c; return max; } int main() { float a,b,c; scanf("%f %f %f",&a,&b,&c); printf("%.3f\n",fun(a,b,c)); printf("%.3f",max(a,b,c)); return 0; } //几个不同的宏定义的书写方法 //#define max(a,b,c) (a>b?a:b)>(b>c?b:c)?(a>b?a:b):(b>c?b:c) //#define max(a,b,c) (a>b?(a>c?a:c):(b>c?b:c)) //#define max(a,b,c) (a>b?a:b)>z?(a>b?a:b):z //看起来差不太多,个人觉得后两种比较容易理解