使用C语言编写程序求三个数中的最大值。


数据类型可能是整型、字符型、实型。
#define max3(x, y, z) ({ \
typeof(x) _max1 = (x); \
typeof(y) _max2 = (y); \
typeof(z) _max3 = (z); \
(void) (&_max1 == &_max2); \
(void) (&_max1 == &_max3); \手旅
_max1 > _max2 ? (_max1 > _max3 ? _max1 : _max3) : \
(_max2 > _max3 ? _max2 : _max3); })

以上为最大值的宏定义
其中 (void) (&_max1 == &_max2),两种不同类型的指针变量,在==逻辑比较时,编译器会提示警告错误,袜薯让用来告局解决宏参数x和y数据类型不一样的问题。
#include<stdio.h>
void main(){
int a,b,c;
int max;
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max<b) max =b;
if(max<c) max= c;
printf("The max is:%d",max);
}

实现的方法有很多,随便在窗口上给你写了一个,你自己试试吧!类型如果变了就把变量的定义类型改一下就行了。如果差派想使用泛型,就比较复杂了。原理很简单,需虚汪贺要写成一个传陵宏递泛型的函数,可能会涉及到模板等,比较复杂。
用Visual C++编写
#include <stdio.h>
int main()
{
int max(int x,int y,int z);
int a,b,c,d;
scanf("%d%d%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d\n",d);
return 0;
}
int max(int x,int y,int z)
{int p;
if(x>数含拆y)p=x;
else p=y;
if(y>z)p=y;
else p=z;
if(x>z)p=x;
else p=z;
return(p);
}
望薯枣采老侍纳!
#include <stdio.h>
#define max(x,y) ((x)>(y)?(x):(y))

void main()
{
int a1=1,b1=2,c1=3,d1;
double a2=1.1,b2=1.2,c2=1.3,d2;
char a3='册歼a',b3='b'州瞎冲,c3='c',d3;
d1=max(a1,max(b1,c1));
d2=max(a2,max(b2,c2));
d3=max(a3,max(b3,c3));
printf("%d\n",d1);
printf("%lf\n",d2);
printf("%c\n"神灶,d3);
}
擦~我还想给你答呢~