c语言用宏定义求4个数的最大值

2024年11月27日 12:50
有4个网友回答
网友(1):

思路:判断两个数最值可以用三目运算符,例如求x和y的最大数:x>y?x:y,对于四个数a,b,c,d,烂顷可以先判断a和b的最大值为x,c和d的明历并最大值为y,最后求x和y的最大值。

参考代码:

#include 
#define max(a,b,c,d)  (a>b?a:b)>(c>d?c:d)?(a>b?a:b):(c>d?c:d) 
int main()
{
int a,b,c,d;
scanf("激迹%d%d%d%d",&a,&b,&c,&d);
printf("max:%d",max(a,b,c,d));
return 0;
}
/*运行结果:
1 4 5 2
max:5
*/

网友(2):

c语言 头文件 #include 定义了各种类型的最大值。
浮点数最大值帆伍定义在 float.h 里,(limits.h 包含了 float.h)
例如:
#define DBL_DIG 15 // double 精度 15位数字
#define DBL_EPSILON 2.2204460492503131e-016 // 最小的数:1.0+DBL_EPSILON != 1.0
#define DBL_MANT_DIG 53 /* # of bits in mantissa */
#define DBL_MAX 1.7976931348623158e+308 // 最大值
#define DBL_MAX_10_EXP 308 /辩核/e 格式 最大指数

你可以:
#define DB_INF DBL_MAX
定义double最大值为double正无穷DB_INF

还有各种最大值(整型,无符号型,float型,32位,64位,128位。。。。)见编译器 有关携轿掘的头文件们。

网友(3):

#include "stdio.h"
void main()
{
int a,b,c,d,MAX;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
switch(a>b)
{
case 0:
if(b>c)
{
if(b>d)
printf("最大值是:%d",b);
else
printf("最大值是:%d",d);
}
else
{
if(c>d)
printf("最大值是:%d",c);
else
printf("最大态贺耐值是:%d",d);
}
break;
case 1:
if(a>帆春c)
{
if(a>d)
printf("最大值是:%d",a);
else
printf("最大值是:%d",d);
}
else
{
if(c>d)
printf("最大值是:%d"拍清,c);
else
printf("最大值是:%d",d);
}
break;
default:
break;
}
}

不知道可否这样?
还有一个简洁一点的
#include "stdio.h"
void main()
{
int a,b,c,d,MAX1,MAX;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
MAX=(a>b?a:b);
MAX1=(MAX>c?MAX:c);
switch(MAX1>d)
{
case 0:
printf("最大值是:%d",d);
break;
case 1:
printf("最大值是:%d",MAX1);
break;
default:
break;
}
}

网友(4):

#define MAX(A,B,C,D) ((A)>链拿(B)?(A):(B))>握拍((C)>(D)?(C):(D))?((A)>(B)?(A):(B)):((C)>段唤羡(D)?(C):(D))